我正在构建一个小应用程序(最终):
上传文件+使用后台分析工具对其进行处理+将其反馈给上传它的用户。我正在尝试将每个文件放入一个随机生成的文件夹名称中,以便对事物进行分类。
首先,我正在上传重定向工作,他们几乎就在那里,但我似乎无法将瓶子重定向到随机生成的文件夹名称,即使它存在并且用户具有该文件已上传。
这就是我如何完成这个......
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
foldername = tempfile.mkdtemp(prefix='file', dir='uploads')
file.save(os.path.join(foldername, filename))
return redirect(url_for('uploaded_file', foldername=foldername, filename=filename))
else:
return '<h3>Invalid File, PDF or image only.</h3>'
@app.route('/<foldername>/<filename>')
def uploaded_file(foldername, filename):
return send_from_directory(filename)
在重定向上,文件位于正确的位置,文件夹位于正确的位置,浏览器将指向正确的位置,但烧瓶404s ... ...
192.168.1.69 - - [29/Jan/2017 22:32:19] "GET / HTTP/1.1" 200 -
192.168.1.69 - - [29/Jan/2017 22:32:25] "POST /upload HTTP/1.1" 302 -
192.168.1.69 - - [29/Jan/2017 22:32:25] "GET /uploads/file0wr5ug4y/Screen_Shot_2017-01-25_at_11.23.48_AM.png HTTP/1.1" 404 -
答案 0 :(得分:0)
忽略对第一个回复字符串的最后一条评论,试错了。
foldername也必须传递给send_from_directory函数,更重要的是必须以'path:'为前缀,以允许filename变量值为路径。
所以最后的路线看起来像......
@app.route('/<foldername>/<path:filename>')
def uploaded_file(foldername, filename):
return send_from_directory(foldername, filename)