python - Using the Flask-RESTFUL, how do I implement file/photo uploading in one of the post methods? -
i've been messing around quite time following instructions such as, http://flask.pocoo.org/docs/0.10/patterns/fileuploads/ , trying use flask-uploads (i not import correctly, keeps saying cannot import extension). i'm going stick flask's methods uploading photos.
anyways, figured flask-restful pretty standard:
from flask import make_response, flask, request, jsonify, redirect, url_for flask.ext.sqlalchemy import sqlalchemy flask_restful import reqparse, abort, api, resource flask.ext.httpauth import httpbasicauth werkzeug import secure_filename import os app = flask(__name__) db = sqlalchemy(app) app.config['sqlalchemy_database_uri'] = 'mysql://thanks:foryourhelp@localhost' upload_folder = '~/documents/app/static' allowed_extensions = set(['pdf', 'png', 'jpg', 'jpeg', 'gif']) app.config['uploads_folder'] = upload_folder api = api(app) auth = httpbasicauth() class uploadphoto(resource): decorators = [auth.login_required] def __init__(self): self.reqparse = reqparse.requestparser() self.reqparse.add_argument('image', type = str, default="") self.reqparse.add_argument('lat', type = float, default="") self.reqparse.add_argument('lon', type = float, default="") super(uploadphoto, self).__init__() def post(self): file = request.files['file'] if file , allowed_file(file.filename): filename = secure_filename(file.filename) file.save(os.path.join(app.config['upload_folder'], filename)) return redirect(url_for('uploaded_file', filename=filename)) api.add_resource(uploadphoto, '/uploads/')
so wanted test , upload file using python's requests library uploading photo, , line of code that's throwing error is:
file.save(os.path.join(app.config['upload_folder'], filename)) keyerror: 'upload_folder'
is because i'm using flaskrestful? have different way of setting api using resources. anyways, i'm stuck , working, thanks.
you have app.config['uploads_folder'] = upload_folder
, in post
function use app.config['upload_folder']
. should use app.config['uploads_folder']
.
Comments
Post a Comment