记录一个Flask文件上传的小坑

Flask在上传文件的时候,视图函数里面,作为参数传给save()的路径,是从整个Flask项目的最外层开始算的。
假如你在第二级目录里创建了一个uploads目录,然后save('/uploads/xxx.txt'),那么就会提示** IOError: [Errno 2] No such file or directory ** 错误。
save()的路径参数应当是从第一级目录开始写起的。

记录一个Flask文件上传的小坑_第1张图片
目录树1

如目录树1所示结构,

# views.py
@app.route('/uploads', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file_ = request.files['file']
        file_.save('uploads/aaa.txt')
        ...

那么这段代码运行后就会报错:
IOError: [Errno 2] No such file or directory: 'uploads/aaa.txt'
此时如果将参数路径修改为:'app/uploads/aaa.txt',代码就能正常运行了。

记录一个Flask文件上传的小坑_第2张图片
目录树2

如目录树2所示结构,(以下代码没有改变,此处只是再写一遍,这样你就不需要再向上翻看代码了(贴心如我(*__)* ))

# views.py
@app.route('/uploads', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'POST':
        file_ = request.files['file']
        file_.save('uploads/aaa.txt')
        ...

此时,这段代码运行后就没有错误了。

THE END

你可能感兴趣的:(记录一个Flask文件上传的小坑)