在使用flask下载文件时会出现的一个文件下载不到的问题

from flask import send_from_directory
@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'],
                               filename)
                               
genericpath.py 如果系统安装了这个组件的话:
会替换系统自带的path功能,导致,path失效了。最终会找不到文件。
代码只有这样简短的几句话而已。就是这个os.path.isfile会有问题。所以,放在uploaded_file中来完成这个动作,就可以了
"""
filename = safe_join(directory, filename)
if not os.path.isfile(filename):
    raise NotFound()
options.setdefault('conditional', True)
return send_file(filename, **options)             
最终的代码类似于这个样子:
#filename = flask.safe_join(UPLOAD_FOLDER, filename)
print(flask.safe_join(UPLOAD_FOLDERS,secure_filename(filename)))
print(os.path.isfile(filename))
return flask.send_file(flask.safe_join(UPLOAD_FOLDERS,secure_filename(filename)),as_attachment=True)

 从现象上看,好像是genericpath.py将python自己带的path这个类重写了,导致所有对path的操作,都指向了genericpath这个里面,这个类的处理又和系统自带的有些不太一样,所以会导致相同的方法返回值完全不同的情况,

比如:os.path.isfile这个方法执行时,同样的一个文件,会得出不同的结果。

转载于:https://my.oschina.net/u/1462124/blog/521300

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Flask一个Python 编写的轻量级 Web 框架,用于开发 Web 应用程序。Flask 文件下载是指通过 Flask 应用程序提供的下载功能,将指定的文件发送给客户端,让客户端可以下载文件。要实现 Flask 文件下载,可以使用 send_file() 方法,该方法接受文件路径作为参数,并将文件发送给客户端。示例代码如下: ```python from flask import Flask, send_file app = Flask(__name__) @app.route('/download') def download_file(): file_path = '/path/to/file' # 指定要下载文件路径 return send_file(file_path, as_attachment=True) if __name__ == '__main__': app.run() ``` 在上述代码中,'/download' 路由指定了文件下载的路径,可以根据实际情况进行修改。`send_file()` 方法用于发送文件,`as_attachment=True` 表示将文件作为附件下载,而不是在浏览器中直接打开。你可以将上述代码添加到你的 Flask 应用程序中,然后通过访问指定的路由来实现文件下载123 #### 引用[.reference_title] - *1* [jflash下载.hex文件](https://blog.csdn.net/weixin_53627907/article/details/126302524)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* *3* [jflash 下载程序](https://blog.csdn.net/jf_52001760/article/details/122450796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值