Flask:保存上传文件时出现IOError

sla*_*man 11 python flask

我学习烧瓶中,我试图通过这里记录的上传文件模式工作:http://flask.pocoo.org/docs/patterns/fileuploads/.我在Windows 7上使用Firefox 12,并且在本地计算机上以调试模式运行我的应用程序.

我正在逐字复制示例,除了我定义的UPLOAD_FOLDER变量的值,UPLOAD_FOLDER = '/uploads'并创建了一个名为"uploads"的目录,该目录存在于应用程序根目录中(以及静态和模板目录).

上传文件后,我收到错误: IOError: [Errno 2] No such file or directory: '/uploads\\u.png'

有趣的是,如果我为uploads文件夹指定一个原始字符串,它直接指向我的机器上的上传,就像UPLOAD_FOLDER = r'C:\Python27\projects\Flask\myproject\uploads'一切正常.

我没有以正确的方式指定目录吗?上传目录应该放在其他地方吗?

ajk*_*hol 33

为什么不尝试这个,它对我有用.

APP_ROOT = os.path.dirname(os.path.abspath(__file__))
UPLOAD_FOLDER = os.path.join(APP_ROOT, 'static/uploads')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
Run Code Online (Sandbox Code Playgroud)


jd.*_*jd. 12

'/ uploads'开头的斜杠使路径规范成为绝对路径:前导斜杠表示文件系统层次结构的根.虽然这可能不完全是Windows上的工作方式,但Python以这种方式理解它是有道理的,因为它的路径处理功能是跨平台的.

表单'uploads /'和'./uploads/'是等效的,它们是相对的.

请注意,相对路径是相对于当前目录的,您不一定要控制它,因此您可能希望为UPLOAD_FOLDER指定绝对路径.

  • 在Windows上,`/ uploads`(或`\ uploads`)指的是当前驱动器的根目录.如果当前目录是`D:\ Projects\FlaskTest`,那么它指的是'D:\ uploads`. (2认同)