Flask-Uploads URL始终为404

时间:2015-02-12 20:12:25

标签: python flask flask-uploads

我使用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方法实际上并不检查文件是否存在,但我可以看到文件实际存在。是不是以某种方式看错了地方?谢谢你的帮助。

1 个答案:

答案 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不知道如何提供上传的文件。