用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/'
就会报错。
Flask资源定位是依靠
__name__参数(文件名或包名),所以相对定位一定要基于这个文件路径。为什么会在static文件夹路径下会正确?Flask默认静态文件在static文件下。可以参考Flask API文档,有详细说明。
另外static中文件的访问方式是:
如果temp不在static文件夹下这种情况是可以的。
用
app.config['UPLOAD_FOLDER'] = '/tmp/'
试一试。之前的static访问方式我写错了,不好意思