Flask-上传权限被拒绝
Flask-Uploads Permission Denied
我在 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)
错误是由保存行引起的。对于如何解决这个问题,有任何的建议吗?谢谢
您的 linux 用户对 /app/uploads/
有文件权限吗?使用 ls -la /app/uploads
检查。
请注意 /app
会尝试在 /
的文件系统根目录中写入文件。
如果您希望在您的应用中写入文件,请使用 app/uploads
而不是 /app/uploads/
。从错误来看,/app
根本不存在,写入 app/uploads
正是您想要做的。
我知道这已经晚了 5 年,但我会把它放在这里以供将来看到它的人使用。
我的解决方案是创建一个同名的空文件 (open("path/to/file.png").close()
),然后保存该文件
如果您也遇到了 (PermissionError: [Errno 13] Permission denied:) 的问题,那么这可能对您有所帮助。
#进口
from flask import Flask, render_template, reques
#code [python]
@app.route("/img", methods=["GET", "POST"]) def get_img(): r = request.files.get("file1") with open("n.png", "wb") as fp: for itm in r: fp.write(itm) return "done"
代码 [html]
<html>
<head>
</head>
<body>
<form action="/img" method="post" enctype="multipart/form-data">
<input type="file" id="22" style="margin-top: 100px;" name="file1">
<button type="submit" style="margin-top: 100px;">send</button>
</form>
</body>
</html>
我在 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)
错误是由保存行引起的。对于如何解决这个问题,有任何的建议吗?谢谢
您的 linux 用户对 /app/uploads/
有文件权限吗?使用 ls -la /app/uploads
检查。
请注意 /app
会尝试在 /
的文件系统根目录中写入文件。
如果您希望在您的应用中写入文件,请使用 app/uploads
而不是 /app/uploads/
。从错误来看,/app
根本不存在,写入 app/uploads
正是您想要做的。
我知道这已经晚了 5 年,但我会把它放在这里以供将来看到它的人使用。
我的解决方案是创建一个同名的空文件 (open("path/to/file.png").close()
),然后保存该文件
如果您也遇到了 (PermissionError: [Errno 13] Permission denied:) 的问题,那么这可能对您有所帮助。
#进口
from flask import Flask, render_template, reques
#code [python]
@app.route("/img", methods=["GET", "POST"]) def get_img(): r = request.files.get("file1") with open("n.png", "wb") as fp: for itm in r: fp.write(itm) return "done"
代码 [html]
<html>
<head>
</head>
<body>
<form action="/img" method="post" enctype="multipart/form-data">
<input type="file" id="22" style="margin-top: 100px;" name="file1">
<button type="submit" style="margin-top: 100px;">send</button>
</form>
</body>
</html>