我正在尝试使用 Flask 在 Heroku 上运行一个简单的图像上传应用程序。我在这里学习教程:http://flask.pocoo.org/docs/patterns/fileuploads/
但是,我想使用 S3 来存储文件而不是临时目录,因为 Heroku 不允许您写入磁盘。我找不到任何具体针对 Heroku 和 Flask 执行此操作的示例。
最佳答案
在我看来,在将上传文件存储到临时文件的示例代码中,您只需替换 file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename) )
使用将文件上传到 S3 的代码。
例如,从链接页面:
def upload_file():
if request.method == 'POST':
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
s3 = boto.connect_s3()
bucket = s3.create_bucket('my_bucket')
key = bucket.new_key(filename)
key.set_contents_from_file(file, headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None)
return 'successful upload'
return ..
或者,如果您想异步上传到 S3,您可以使用 Heroku 提供的任何排队机制。
关于python - 将 Amazon S3 与 Heroku、Python 和 Flask 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8107198/