Flask,Apache,mod_wsgi:无法在服务器端保存文件

时间:2013-09-18 18:26:13

标签: python apache file file-upload flask

从客户端我通过邮件从form enctype=multipart/form-data发送图像,在服务器端我将其保存到目录。所有这些都在我的计算机上本地工作,直接用python app.py运行烧瓶。

以下是我设置文件保存的参考资料:

http://flask.pocoo.org/docs/patterns/fileuploads/

在实际的生产服务器上,我使用Apache和mod_wsgi运行它,我根据这个网站设置:

http://flask.pocoo.org/docs/deploying/mod_wsgi/

对于目录权限,我尝试过chown -R 777chown -R www-data:www-data,其中用户的相关Apache代码如下所示:WSGIDaemonProcess app user=www-data group=www-data threads=5

然而,在所有这些之后,我仍然无法保存文件。我只是在尝试保存文件时收到500 HTTP错误。

以下是相关的Flask代码:

UPLOAD_FOLDER = '/images/'
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

@app.route('/upload_ocr_images', methods=['GET', 'POST'])
def upload_images():
    if request.method == 'POST':
        files = request.files.getlist("images[]")
        for file in files:
            if allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
    return redirect(url_for('home'))

此时我想知道是否需要在Apache方面设置一些东西。

1 个答案:

答案 0 :(得分:4)

您使用/uploads作为路径。 这意味着您正在尝试上传到文件系统根级别的名为/uploads的目录。

这通常是错误的,通常是错误。

如果您的烧录应用程序文件结构中的uploads文件夹 ,那么您应该使用app.root_path创建路径,该路径包含绝对应用程序路径。

这样的东西
file.save(os.path.join(app.root_path, '/uploads', filename))