你需要确保传递给directory
参数的值是绝对路径,并已针对应用程序的当前位置进行了更正。
最好的方法是将其配置UPLOAD_FOLDER
为相对路径(没有前导斜线),然后通过在前面添加绝对路径使其成为绝对路径current_app.root_path
:
@app.route('/uploads/<path:filename>', methods=['GET', 'POST'])
def download(filename):
uploads = os.path.join(current_app.root_path, app.config['UPLOAD_FOLDER'])
return send_from_directory(directory=uploads, filename=filename)
重申这一点很重要,这一点UPLOAD_FOLDER
必须相对,例如,不能以开头/。
相对路径可能有效,但在很大程度上取决于将当前工作目录设置为Flask代码所在的位置。并非总是如此。