Flask-Uploads权限被拒绝

时间:2015-02-12 16:14:15

标签: python flask flask-uploads

我在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)

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

2 个答案:

答案 0 :(得分:3)

您的linux用户是否拥有/app/uploads/的文件权限?使用ls -la /app/uploads检查一下。

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

如果您要在自己的应用中撰写文件,请使用app/uploads代替/app/uploads/。从错误中看,/app似乎根本不存在,写入app/uploads正是您想要做的。

答案 1 :(得分:0)

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

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