python - 将 Amazon S3 与 Heroku、Python 和 Flask 结合使用

标签 python file-upload heroku amazon-s3 flask

我正在尝试使用 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/

相关文章:

python - 无法在 python scrapy 中运行扩展

java - 如何在Java中文件上传期间向我的post请求添加多个参数

c# - 在 ASP.NET 中使用类似 FileUpload 的按钮

python - 将数组归一化为总和为 1.0 的两种方法

python - Flask 和 PyJWT 检索授权 header

python - 类中生成器中的变量作用域

java - 使用 spring hibernate 上传和下载文件,对这种方法有点困惑。有人可以指导我吗......?

css - Rails 5 - 用户指定的 CSS 在具有自定义域的 Heroku 上不起作用

node.js - 在同一个 Heroku app/dyno 上部署后端和前端

ruby-on-rails - 应用程序已推送到 heroku 但由于 dotenv gem 而无法工作