如何在不存储在服务器端的情况下用flask生成下载URL?

时间:2019-03-26 10:14:27

标签: python flask download

因此,我正在尝试使用Flask创建一个简单的Web应用程序。我的应用将收到用户上传的图片,并返回一个包含一些已编辑图片的zip文件(为该图片或类似图片添加一些有趣的表情符号)。我的zip是使用Python创建的。我的问题是:在完全生成该zip后,如何生成该zip的下载URL?我认为将zip存储在服务器端是不好的(只是出于我的客观考虑),因为我的应用是公开的,我的意思是用户不必登录或注册,只需上传文件即可接收zip。

我尝试搜索,有人建议使用base64,还有什么比这更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以在渲染期间直接创建zip文件。但是,请求时间将受到影响。

也许可以使用一种中间件,但我不能告诉你。

也许您返回一个JWT令牌,其中包含所请求图像的地址。根据要求,将创建zip存档。当然,您也可以将图片地址作为POST或GET参数传递。

@app.route('/get-image')
def get_image():
  image_file = request.files['image_addr']

  # load and process image here
  image_data = ...

  # generate zip file 
  mem = io.BytesIO()
  mem.write(gzip.compress(image_data))
  mem.seek(0)
  return send_file(mem, as_attachment=True,
                     attachment_filename='archive.gzip',
                     mimetype='application/gzip')

您正在寻找什么吗?