2015-03-11 27 views
5

Bir API hizmeti oluşturarak dosyaları nasıl yüklersiniz merak ediyordum?Flask-RESTful - Resim yükle

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


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

Ve ben ön- olarak angularjs kullanıyorum sunucu tarafında

üzerinde CORS'yi sağladı

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

ardından HTML Rota son ve bu m ng-upload atıcılar, ama CURL ifadelerini de kullanabilir!

+0

Mavi İth jQuery Dosya https://github.com/blueimp/jQuery-File-Upload – iJade

+0

Merhaba @iJade, ben Ang kullanıyorum yükle kullanmayı deneyin ön uç olarak ular! Ama tavsiye için teşekkürler! Bunu sadece sunucu tarafında nasıl yaptığınızı bilmem gerek! :) – Sigils

+0

@Kasra, üzgünüm. Ama çok fazla veri ile doldurulduğu hakkında yorum aldım! :( – Sigils

cevap

7

Aşağıdaki kod satırlarındaki bir şey yardımcı olmalıdır. Bir wav, işlerin Yukarıdaki kod olsaydı

@app.route('/upload', methods=['GET', 'POST']) 
def upload(): 
    if request.method == 'POST': 
     file = request.files['file'] 
     extension = os.path.splitext(file.filename)[1] 
     f_name = str(uuid.uuid4()) + extension 
     file.save(os.path.join(app.config['UPLOAD_FOLDER'], f_name)) 
     return json.dumps({'filename':f_name}) 
+4

Bu Flask-RESTful kullanıyor görünmüyor –

+0

Benim için de iyi değil – Nabin

7
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() 

Sen akışı işlemek gerekir. bir resim için , veritabanına saklamak veya AWS S3 veya Google Depolama yüklemelisiniz

5

Aşağıda şişeden isteği kullanabilirsiniz

from flask import Flask 
    from flask_restful import Resource, Api, reqparse 
    import werkzeug 

    class UploadAudio(Resource): 
     def post(self): 
     parse = reqparse.RequestParser() 
     parse.add_argument('file', type=werkzeug.datastructures.FileStorage, location='files') 
     args = parse.parse_args() 
     audioFile = args['file'] 
     audioFile.save("your_file_name.jpg") 
2

yüklenen dosyayı kaydetmek için yeterlidir

class UploadImage(Resource): 
    def post(self, fname): 
     file = request.files['file'] 
     if file and allowed_file(file.filename): 
      # From flask uploading tutorial 
      filename = secure_filename(file.filename) 
      file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) 
      return redirect(url_for('uploaded_file', filename=filename)) 
     else: 
      # return error 
      return {'False'} 

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