用flask做的后台,在尝试上传文件的时候,若是 UPLOAD_FOLDER = 'tmp'这么配置(tmp 是文件根目录下的一个文件夹),是可以成功上传的,但是在读取这个文件的时候,路径怎么写都不对,当我把 tmp这个文件夹移到static下之后就可以顺利的通过路径找到,但是这样就无法上传了,若是把配置改为UPLOAD_FOLDER = 'static/tmp/'上传就会报错,找不到这个路径,简直郁闷死了。在项目根目录下的文件要怎么写路径才能找到呢,又或者怎么才能把保存文件的路径改为'static/tmp/'呢??flask新手一枚,实在不懂,求大神告知。
补充一下我的代码:
app = flask.Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'tmp'
@app.route('/', methods=['POST'])
def upload_file():
file = request.files['file']
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return 'upload success'
目录结构是这样的:
project
--app
--static
--templates
--__init__.py
--其他文件...
--tmp
--config.py
--run.py
目录结构大概就是这个样子的,这种情况下文件是可以上传到tmp文件夹里的,但是没法通过路径读出来(可能是我不会写,试了很多种写法都不对!- -),如果把tmp文件夹移到static目录下,就可以找到,但是这样就无法上传了,把配置文件改成app.config['UPLOAD_FOLDER'] = 'static/tmp/'就会报错。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
Flask资源定位是依靠
__name__参数(文件名或包名),所以相对定位一定要基于这个文件路径。为什么会在static文件夹路径下会正确?Flask默认静态文件在static文件下。可以参考Flask API文档,有详细说明。
另外static中文件的访问方式是:
如果temp不在static文件夹下这种情况是可以的。
用
app.config['UPLOAD_FOLDER'] = '/tmp/'试一试。之前的static访问方式我写错了,不好意思
可能是要绝对路径,你设置tmp有可能是因为系统根目录下有个tmp,即/tmp,所以可以上传成功,而你在项目目录下不存在tmp文件夹,所以读取相对路径project/tmp是不存在的。就像找不到绝对路径/static/tmp,我猜是这样,就是说配置路径是绝对路径。
楼主,我遇到了一样一样的问题啊,你怎么解决的?求指导。我是用flask的。上传图片到static的../../upload/目录,然后在html里面不知道<img src="这里怎么写啊">