2016-10-17 38 views
0

Ajax POSTリクエストを使用してFormDataに画像ファイルを送信しようとしています。 I 500内部サーバーエラーAjaxのPOSTリクエスト(これが原因で1であるかどうかわからないを作る Flaskでajax経由でFormDataを送信するにはどうすればよいですか?

  • フラスコ部分に私がいるFormDataを抽出する方法がわからない

    1. : は、私が2つの問題に直面しています

      @app.route('/', methods=['GET','POST']) 
      def upload_file(): 
      if request.method == 'POST': 
          file = request.files['file'] 
          if file: # and allowed_file(file.filename): 
           filename = secure_filename(file.filename) 
           file.save(os.path.join(os.getcwd()+"/static", "current_image.jpg")) 
           return jsonify({'tasks': tasks}) 
      
      :)

    はあなたに

    フラスコPythonコードをありがとう

    HTMLとJavascriptコード:

    <input id="pictureInput" type=file name=file> 
    <input type=submit value=Upload id="button"> 
    
    <script type="text/javascript"> 
    var pictureInput = document.getElementById("pictureInput"); 
    var myFormData = new FormData(); 
    myFormData.append('pictureFile', pictureInput.files[0]); 
    
    $("#button").click(function(){ 
        console.log(pictureInput); 
        console.log(pictureInput.files[0]); 
        console.log(myFormData); 
    
        $.ajax({ 
         url: "http://localhost:8000/", 
         type: 'POST', 
         processData: false, // important 
         contentType: false, // important 
         dataType : 'json', 
         data: myFormData, 
         success : function(data){ 
          console.log(data); 
         }, 
        }); 
    }); 
    </script> 
    

    エラー: enter image description here

  • +0

    その500応答の* content *は何ですか?実際のエラーとは何ですか? –

    +0

    申し訳ありませんダニエル、私はちょうどあなたが意味することを理解しています。私はPOSTMANを使って得たエラー応答を追加しました。 – matchifang

    +0

    これは最初に示したものとは異なるコードです。 'sys.stdout.write'でエラーが発生しています。 –

    答えて

    0

    次のコードは、あなたのために働く必要があります。 あなたのapp.pyファイルと同じレベルのstaticフォルダを持っている必要があり

    app.py

    import os 
    from flask import Flask, request, jsonify 
    from werkzeug.utils import secure_filename 
    
    app = Flask(__name__) 
    
    
    @app.route('/', methods=['GET','POST']) 
    def upload_file(): 
        if request.method == 'POST': 
         file = request.files['file'] 
         if file: 
          filename = secure_filename(file.filename) 
          file.save(os.path.join(os.getcwd()+"/static", "current_image.jpg")) 
          tasks = [] 
          return jsonify({'tasks': tasks}) 
    
    
    if __name__ == "__main__": 
        app.run(host='0.0.0.0', debug=True) 
    

    タスクは、あなたのコード内の上記で定義されたので、私はちょうど空にそれを初期化されていませんリスト。 jQueryがテンプレートにロードされていることを確認する必要もあります。

    関連する問題