Flask文件上传调用save方法报IsADirectoryError错误如何解决
问题根因
你对Flask中FileStorage对象的save()方法参数理解有误,该方法仅接受1个必填的完整目标文件路径作为参数,第二个可选参数是读写缓冲区大小,并非你以为的「存储目录+文件名」两个独立参数。
你现有代码的括号位置写错:
file.save(os.path.join(app.config['UPLOAD_FOLDER']),file_name)
上述代码中os.path.join()仅传入了上传目录一个参数,返回值就是目录本身,相当于把目录路径直接传给save()作为存储路径,自然会触发IsADirectoryError报错。
修复方案
把文件名参数放到os.path.join()的括号内部,拼接出完整的目标文件路径后再传给save()即可:
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name))
额外优化建议
可以在程序初始化阶段先判断上传目录是否存在,不存在就自动创建,避免后续出现目录不存在的报错:
import os UPLOAD_FOLDER = os.path.join(os.getcwd() + '/EmailApp', 'attachments') # 自动创建不存在的上传目录 if not os.path.exists(UPLOAD_FOLDER): os.makedirs(UPLOAD_FOLDER) app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
内容的提问来源于stack exchange,提问作者AbrarWali
相关产品推荐
相关产品推荐

