小王:嘿,小李,我正在开发一个校园宿舍管理系统,但是遇到了一个问题,就是不知道如何添加文件下载功能。
小李:嗨,小王!这个问题挺常见的。我们可以使用Python和Flask来实现这个功能。你已经安装了Flask吗?
小王:是的,我已经安装了Flask。
小李:那太好了!我们先从简单的开始。首先,你需要创建一个路由,让用户可以访问到下载链接。你可以试试这段代码:
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/download/
def download_file(filename):
return send_from_directory(directory='uploads', path=filename, as_attachment=True)
]]>
小王:这看起来很简单。但我还需要在系统中上传文件,这样用户才能下载它们。这部分怎么处理呢?
小李:对,我们需要一个上传功能。你可以添加一个新的路由来处理文件上传。这里是示例代码:
import os
from flask import request
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part"
file = request.files['file']
if file.filename == '':
return "No selected file"
if file:
filename = file.filename
file.save(os.path.join("uploads", filename))
return f"File {filename} has been uploaded successfully."
]]>
小王:太棒了!我现在可以上传和下载文件了。不过,我还想确保只有经过身份验证的用户才能下载文件。
小李:理解你的需求。我们可以在下载路由上添加身份验证。这里是一个简单的示例:
from flask import session
@app.route('/download/
def download_file(filename):
if 'username' not in session:
return "Please login first!"
return send_from_directory(directory='uploads', path=filename, as_attachment=True)
]]>
小王:这正是我需要的!感谢你的帮助,小李。
小李:不客气,祝你项目成功!如果有其他问题,随时联系我。