我有一个 Flask 网络应用程序,它允许用户上传文件,然后在浏览器中下载或显示它们。在生产过程中,我应该使用send_from_directory
服务器上的上传文件夹来提供这些文件吗?
2 回答
我已经实现了这种想法。我正在使用烧瓶休息。但是您可以将此作为参考。 用于上传文件
from document_folder.config import dir_path
file = data['file'] #data is a reqparse.
filename = werkzeug.secure_filename(file.filename)
file.save(os.path.join(str(dir_path), str(filename))
config.py 用于文档静态文件夹。将其放在文档静态文件夹中
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
下载 您必须将文档的名称保存到您的数据库中,以便您可以下载文档。
docu = DocumentModel.exists(_id)
if docu:
filename = docu.filename
return send_file(os.path.join(dir_path, filename), as_attachment=True)
解析器应该是这样的。
parser.add_argument('file',
type=werkzeug.datastructures.FileStorage,
location='files'
)
你最好让 nginx 为你的静态文件提供服务。众所周知,flask 对于这项任务的性能相对较差。但是,如果您的服务器没有得到充分利用,那也没关系。