11

我正在学习 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',一切正常。

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

4

2 回答 2

32

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

APP_ROOT = os.path.dirname(os.path.abspath(__file__))
UPLOAD_FOLDER = os.path.join(APP_ROOT, 'static/uploads')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
于 2013-11-28T04:29:01.157 回答
12

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

'uploads/' 和 './uploads/' 形式是等价的,它们是相对的。

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

于 2012-05-17T14:51:10.553 回答