Reputation: 2214
From the client side I am sending an image via post from form enctype=multipart/form-data
, and on the server side I am saving it to a directory. All of this works locally on my computer and running flask directly with python app.py
.
Here is my reference for setting up file saving:
http://flask.pocoo.org/docs/patterns/fileuploads/
On the actual production server, I am running it with Apache and mod_wsgi, which I set up according to this website:
http://flask.pocoo.org/docs/deploying/mod_wsgi/
For directory permissions I have triedchown -R 777
and chown -R www-data:www-data
where the relevant Apache code for users looks like this: WSGIDaemonProcess app user=www-data group=www-data threads=5
.
However, after all of this I am still not able to get the file to save. I just get a 500 HTTP error back at the point where it tries to save the file.
Here is the relevant Flask code:
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'))
At this point I am wondering if there is something I need to be setting on the Apache side of things.
Upvotes: 4
Views: 2834
Reputation: 8202
Youre using /uploads
as your path.
That means you're trying to upload to a directory named /uploads
at root level of your filesystem.
This is usually wrong and normally it's the error.
If you've the uploads
folder under your flask application file structure, then you should create the path using app.root_path
which holds the absolute application path.
Something like
file.save(os.path.join(app.root_path, '/uploads', filename))
Upvotes: 6