我有一个生成图像的脚本。 该映像保存在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存储桶中找到图像。 这也适用于开发和生产。 感谢