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这个方法执行时,同样的一个文件,会得出不同的结果。
时间: 2024-10-06 12:33:59