4

我在我的 Flask 应用程序中使用Flask Uploads作为上传表单。但是,每当我尝试保存文件时,我都会收到此错误:

File "/Users/Documents/virtual_environment/bin/../lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/app'

似乎上传没有保存文件的必要权限?这是我用于烧瓶上传的配置:

UPLOADS_DEFAULT_URL = os.environ.get("UPLOADS_URL", "http://localhost:5000/")
UPLOADS_DEFAULT_DEST = "/app/uploads/"
UPLOAD_EXTENSIONS = set(["csv", "xls", "xsls"])

另外,这是我保存实际文件的方式:

@app.route('/upload', methods = ['GET', 'POST'])
@app.route('/upload/', methods = ['GET', 'POST'])
@roles_accepted('admin', 'team')
def r_upload():
    form = FileUploadForm()

    if form.validate_on_submit():
        filename = uploadSet.save(form.uploadfile.data)
        url = uploadSet.url(filename)
        flash("%s uploaded <a href=\'%s\'>HERE</a>!" % (filename, url))

    return render_template('/uploads.html',
        dashboard_title = "%s Uploads" % g.name,
        form = form)

该错误是由保存行引起的。对于如何解决这个问题,有任何的建议吗?谢谢。

4

2 回答 2

4

你的linux用户有文件权限/app/uploads/吗?检查使用ls -la /app/uploads.

请注意,这/app将尝试在文件系统的根目录中写入文件/

如果您希望在应用程序中写入文件,请使用app/uploads而不是/app/uploads/. 从错误来看,它看起来/app根本不存在,而写入app/uploads正是您想要做的。

于 2015-02-12T16:18:23.493 回答
0

我知道这已经晚了 5 年,但我会把它放在这里,以供将来看到它的人使用。

我的解决方案是创建一个具有相同名称 ( open("path/to/file.png").close()) 的空文件,然后保存该文件

于 2021-02-05T16:43:18.647 回答