在Flask中仍然从文件系统而不是AWS-S3提供静态文件

时间:2018-05-12 07:35:48

标签: python amazon-web-services amazon-s3 flask

我有一个生成图像的脚本。 该映像保存在OS静态文件夹内的目录中。 image.png保存在:

-static
    -images
        -monkeys
            - image.png

服务器端点函数应该将图像上传到我的S3-bucket并从我的存储桶返回该静态文件,而不是从我的OS文件系统返回。

由于某种原因,这不起作用。 图片上传工作正常,我可以看到桶中的图像,我只是无法提供静态图像,我收到一个错误: “在服务器上找不到请求的URL。如果您手动输入了URL,请检查拼写并重试。”基本上它找不到图像。

我以下列方式使用flask-S3:

app = Flask(__name__)
app.config['FLASKS3_BUCKET_NAME'] = os.environ.get('S3_BUCKET_NAMEING')
app.config['USE_S3_DEBUG'] = True
s3 = FlaskS3(app)

我提供静态图像的端点:

@app.route('/image/monkey/<address>', methods = ['GET'])
def monkey_image(address):
        # There is some code here that generates that image and places it 
        # inside the monkeys folder. I did not include it because
        # it is not relevant to the question 
        image = open(image_path, 'rb')
        S3_path = 'images/monkeysS3/' + monkey_image_name
        upload_image_to_s3_bucket(image,'static/' + S3_path)
        return redirect(flask_url_for('static', filename=S3_path))

所以最后两行很重要。

  

upload_image_to_s3有效。问题来自

return redirect(flask_url_for('static', filename=path)).

它无法在我的S3存储桶中找到图像。 这也适用于开发和生产。 感谢

0 个答案:

没有答案