我正在尝试使用Flask创建一个Web应用程序,允许用户上传文件并将其提供给另一个用户。现在,我可以正确地将文件上传到upload_folder中。但是,我似乎找不到让用户下载它的方法。
我将文件名存储在数据库中。
我有一个视图服务于数据库对象。我也可以删除它们。
@app.route('/dashboard', methods=['GET', 'POST'])
def dashboard():
problemes = Probleme.query.all()
if 'user' not in session:
return redirect(url_for('login'))
if request.method == 'POST':
delete = Probleme.query.filter_by(id=request.form['del_button']).first()
db.session.delete(delete)
db.session.commit()
return redirect(url_for('dashboard'))
return render_template('dashboard.html', problemes=problemes)
在我的HTML中,我有:
<td><a href="{{ url_for('download', filename=probleme.facture) }}">Facture</a></td>
以及一个下载视图:
@app.route('/uploads/<path:filename>', methods=['GET', 'POST'])
def download(filename):
return send_from_directory(directory=app.config['UPLOAD_FOLDER'], filename=filename)
但它返回:
未找到
服务器上未找到请求的 URL。如果您手动输入了 URL,请检查拼写并重试。
我只想将文件名链接到对象,让用户下载它(对于同一视图中的每个对象)
app.config ['UPLOAD_FOLDER']
中? - Martijn Pieterssend_from_directory()
会引发NotFound
异常。所以os.path.isfile(app.config['UPLOAD_FOLDER']/filename)
返回了 false。您需要仔细检查UPLOAD_FOLDER
的内容,并验证您尝试加载的文件名是否确实存在。 - Martijn Pieters