Python 如何使用flask生成下载url而不存储在服务器端?

Python 如何使用flask生成下载url而不存储在服务器端?,python,flask,download,Python,Flask,Download,所以,我正在尝试用Flask制作一个简单的web应用程序。我的应用程序将收到用户上传的图像,并返回一个包含一些已编辑图像的zip(为该图像或类似图像添加一些有趣的表情)。我的zip是用Python创建的。我的问题是:在我完全生成zip之后,如何生成该zip的下载url?我认为在服务器端存储zip是不好的(这只是我的客观想法),因为我的应用程序是公开的,我的意思是用户不必登录或注册,只需上传文件并接收zip即可 我已经尝试过搜索,有些人建议使用base64,还有比这更好的方法吗?您可以在渲染期间直

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


我已经尝试过搜索,有些人建议使用base64,还有比这更好的方法吗?

您可以在渲染期间直接创建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')

这就是你要找的吗?

你可以生成一个链接,并在上传给用户后将其呈现出来,这样只有拥有链接的用户才能下载zipYou,你的意思是在服务器端用特定的名称存储该zip,并为用户呈现该zip的url?是的,类似这样的。您可以将其发送到s3或FTP服务器。在服务器上保存文件会让你害怕什么?因为我认为这些文件只使用了一次,存储起来有点浪费:D4非常像这样,但是如果你的代码应该用'request.files'替换request.form,用'mem'替换buffer,这对我来说是有效的。谢谢你的帮助!