Search code examples
pythonflaskflask-restful

Flask-RESTful - Upload image


I was wondering on how do you upload files by creating an API service?

class UploadImage(Resource):
    def post(self, fname):
        file = request.files['file']
        if file:
            # save image
        else:
            # return error
            return {'False'}

Route

api.add_resource(UploadImage, '/api/uploadimage/<string:fname>')

And then the HTML

   <input type="file" name="file">

I have enabled CORS on the server side

I am using angular.js as front-end and ng-upload if that matters, but can use CURL statements too!


Solution

  • class UploadWavAPI(Resource):
        def post(self):
            parse = reqparse.RequestParser()
            parse.add_argument('audio', type=werkzeug.FileStorage, location='files')
    
            args = parse.parse_args()
    
            stream = args['audio'].stream
            wav_file = wave.open(stream, 'rb')
            signal = wav_file.readframes(-1)
            signal = np.fromstring(signal, 'Int16')
            fs = wav_file.getframerate()
            wav_file.close()
    

    You should process the stream, if it was a wav, the code above works. For an image, you should store on the database or upload to AWS S3 or Google Storage