@app.route('/download/<filename>') def uploaded_file(filename): def send_file(): store_path = os.path.join(UPLOAD_FOLDER,filename) with open(store_path, 'rb') as targetfile: while 1: data = targetfile.read(1 * 1024 * 1024) # 每次读取1MB (可用限速) if not data: break yield data response = Response(send_file(), content_type='application/octet-stream') response.headers["Content-disposition"] = 'attachment; filename=%s' % filename # 如果不加上这行代码,导致下图的问题 return response
时间: 2023-02-18 19:23:54 浏览: 173
if not data: break yield data return Response(send_file(), mimetype='application/octet-stream', headers={'Content-Disposition':'attachment;filename={}'.format(filename)})
这段代码用来实现什么?
这段代码用来实现文件的下载功能,可以将指定的文件下载到本地。
相关问题
@app.route('/path:path') def serve_static_file(path): # 使用 Flask-SocketIO 的 send_file 函数代替 http.server 的 SimpleHTTPRequestHandler return send_file(path)要访问当前项目目录中的moxingku,这段代码中的path该如何改
如果你想访问当前项目目录中的 `moxingku` 目录下的文件,可以将 `path` 改为 `moxingku/<path:filename>`,例如:
```python
@app.route('/moxingku/<path:filename>')
def serve_static_file(filename):
return send_file('moxingku/' + filename)
```
这样,当访问 `/moxingku/foo/bar.html` 时,`serve_static_file` 函数将返回 `moxingku/foo/bar.html` 文件。
注意,在这个视图函数中,我们将 `filename` 参数传递给 `send_file` 函数,而不是直接使用 `path` 参数。这是因为 Flask 的路由系统将 `/moxingku/` 和 `filename` 分开,因此我们需要手动将它们组合起来。
# 上传图片 @app.route("/photo/upload", methods=['POST', "GET"]) def uploads(): if request.method == 'POST': # 获取post过来的文件名称,从name=file参数中获取 file = request.files['file'] if file and allowed_file(file.filename): print(file.filename) # secure_filename方法会去掉文件名中的中文 file_name = secure_filename(file.filename) # 保存图片 file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name)) return "success" else: return "格式错误,请上传jpg格式文件" return render_template('index.html') 修改成并且返回图片地址
@app.route("/photo/upload", methods=['POST', "GET"])
def uploads():
if request.method == 'POST':
# 获取post过来的文件名称,从name=file参数中获取
file = request.files['file']
if file and allowed_file(file.filename):
print(file.filename)
# secure_filename方法会去掉文件名中的中文
file_name = secure_filename(file.filename)
# 保存图片
file_path = os.path.join(app.config['UPLOAD_FOLDER'], file_name)
file.save(file_path)
# 返回图片地址
return jsonify({'code': 200, 'msg': 'success', 'file_path': file_path})
else:
return jsonify({'code': 400, 'msg': '格式错误,请上传jpg格式文件'})
return render_template('index.html')
注意:这里返回的是json格式的数据,包括上传状态、上传信息和图片地址。
阅读全文