html:
<a name="downloadbtn" class="btn btn-success pull-right" href="/downloadfile/?filename=/root/allfile/123.txt">下载</a>
py: @app.route(/downloadfile/, methods=[GET, POST]) def downloadfile(): if request.method == GET: fullfilename = request.args.get(filename) # fullfilename = /root/allfile/123.txt fullfilenamelist = fullfilename.split(/) filename = fullfilenamelist[-1] filepath = fullfilename.replace(/%s%filename, ) #普通下载 # response = make_response(send_from_directory(filepath, filename, as_attachment=True)) # response.headers["Content-Disposition"] = "attachment; filename={}".format(filepath.encode().decode(latin-1)) #return send_from_directory(filepath, filename, as_attachment=True) #流式读取 def send_file(): store_path = fullfilename with open(store_path, rb) as targetfile: while 1: data = targetfile.read(20 * 1024 * 1024) # 每次读取20M 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
没有文件名,和文件格式,遇到这种情况,打开F12,查看response.headers 与正常的比较
html:
下载 py: @app.route(/downloadfile/, methods=[GET, POST]) def downloadfile(): if request.method == GET: fullfilename = request.args.get(filename) # fullfilename = /root/allfile/123.txt fullfilenamelist = fullfilename.split(/) filename = fullfilenamelist[-1] filepath = fullfilename.replace(/%s%filename, ) #普通下载 # response = make_response(send_from_directory(filepath, filename, as_attachment=True)) # response.headers["Content-Disposition"] = "attachment; filename={}".format(filepath.encode().decode(latin-1)) #return send_from_directory(filepath, filename, as_attachment=True) #流式读取 def send_file(): store_path = fullfilename with open(store_path, rb) as targetfile: while 1: data = targetfile.read(20 * 1024 * 1024) # 每次读取20M 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 没有文件名,和文件格式,遇到这种情况,打开F12,查看response.headers 与正常的比较