我使用Flask-Uploads上传文件并输出网址。但是,由于某种原因,URL始终指向404!我可以在正确的文件夹中看到该文件,但URL似乎无法找到它。以下是我使用的配置......
UPLOADS_DEFAULT_URL = os.environ.get("UPLOADS_URL", "http://localhost:5000/")
UPLOADS_DEFAULT_DEST = "app/uploads"
我还有一个上传集定义为:
productUploadSet = UploadSet('plist', extensions=('xlsx', 'csv', 'xls'))
该文件位于" app / uploads / plist / filename.csv"我会像#34; http://localhost:5000/productlist/filename.csv"" {{3}}"但每当我打开URL时,它总是一个404.我知道Flask-Uploads的url方法实际上并不检查文件是否存在,但我可以看到文件实际存在。是不是以某种方式看错了地方?谢谢你的帮助。
答案 0 :(得分:2)
来自Flask's guide to uploading files:
现在缺少最后一件事:上传文件的服务。从Flask 0.5开始,我们可以使用一个为我们做的功能:
from flask import send_from_directory
@app.route('/uploads/<filename>')
def uploaded_file(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'],
filename)
或者,您可以将uploaded_file注册为build_only规则并使用SharedDataMiddleware。这也适用于旧版本的Flask:
from werkzeug import SharedDataMiddleware
app.add_url_rule('/uploads/<filename>', 'uploaded_file',
build_only=True)
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {
'/uploads': app.config['UPLOAD_FOLDER']
})
如果不实施其中之一,Flask不知道如何提供上传的文件。