2016-12-30 7 views
2

MVCコントローラにイメージとフォーム要素のカップルをアップロードしようとしています。 application/x-www-form-urlencodedで動作しますが、multipart/form-dataで問題があるように見えるため、ここでの問題はモデルが実装されていないことではありません。問題の核心はいるFormDataにフォームを変換する... Request.Formが移入されていないことを、FormDataはMVCコントローラに返されません

です:

function frmValuesAsFormData(submittedForm) { 
    return new FormData(submittedForm); 
} 

AJAX機能(asFormDataが、この場合のように真に渡され、メソッドがPOSTおよびデータ型ですJSON)は次のとおりです。

function executeAJAX(method, url, data, asFormData, silent, callbackFunc, receiveFunc, dataType, targetDiv, appendToExistingContent, uid) { 

    var cType = "application/x-www-form-urlencoded"; 
    var processData = true; 

    if (asFormData) { 
     cType = "multipart/form-data"; 
     processData = false; 
    } 

    $.ajax({ 
     method: method, 
     url: url, 
     data: data, 
     contentType: cType, 
     cache: false, 
     dataType: dataType, 
     processData: processData, 
     success: function (d, t, j) { 
      // Do something with result from controller... 
     } 
    }); 
} 

POSTヘッダ(放火犯から)

アプリケーション/ JSON、トンを受け入れますext/javascript、/; Q = 0.01 受け入れ言語を収縮、gzipでエンコード受け入れEN-GB、EN; Q = 0.5 コンテンツ長936のContent-Typeマルチパート/フォームデータクッキー ASP.NET_SessionId = mzppxvimv03qb0smtyrgdw3zホストはlocalhost:64727 リファラーhttp://localhost:64727/Home/Contactユーザー-agentのMozilla/5.0 (Windows NTの10.0; Win64の、x64の、RV:50.0)のGecko/20100101 Firefoxの/ 50.0 X-要求-でのXMLHttpRequest(放火犯から)

POST例:

----------------------------- 26439188689323コンテンツの処理:fo rm-data;名前= "イメージファイル";ファイル名= "WWKDK33.jpg" のContent-Type:! 画像/ JPEG

PNG IHDR "" xÕj7IDATxÚíÚK ÐÞÿÒzB3〜Þ、OB |nHàøÈB D "B" D "D!B $ !B"Dcdtå "μ B" D!BÔKtb_xv-!B "Dunð+¯uÔ" D!BÑS*ï "B" D!B ¹l B "D!B ô¢ïü・½ä〜" D!B¢URi、ÕÕ "D!BQ/Q:ò[* E" D!B¨a¼ÙôWeéf "D!B¢] HæL〜eD! B "DöÍ_ÉòGGkA" D!BèD±}Çõò4 !B "DZôÀ½rª " D!B¢eD¡¡yøk!B "D!ZGÔ;¯49ūD!B" D "cöÊ@fåQ^ D!B" D?I4_a | Ci @ J!B "DÝ(s° " D!B "D!B" D!B?¤ôô "D!B" D "D!B $! B "A" D!D!B "A" D!ß|ÜY ® ®« IEND®B` ----------------------------- 26439188689323コンテンツの処理:フォームデータ;名前= "uploaderMode"

トーナメント ----------------------------- 26439188689323--

誰でもそれがうまくいかない理由についての手がかりは?ありがとう!

答えて

1

FormDataオブジェクトをリクエストに送信すると、contentTypeからfalseに設定して、content-typeヘッダーを送信しないと問題が発生します。これを試してみてください:

if (asFormData) { 
    cType = false; 
    processData = false; 
} 

はまた、あなたが完全にちょうどdataプロパティの種類を確認することで、あなたの関数にasFormDataプロパティを送信する必要性を取り除くことができることに注意してください:

if (data.constructor == FormData) { 
    cType = false; 
    processData = false; 
} 
+0

男は、あなたから私をここに保存されました痛みの時間!:D 夢のように働く、ありがとう。 – BartWD

関連する問題