2017-05-03 7 views
0

サイズ "4682933"のjavascript blobを送信し、Base64Stringから変換された "image/png"と入力しようとしています。私はサーバー上の何かを取得することができません。 FormCollectionオブジェクトは常にnullです。ここでBlobファイルを送信するときFormCollectionがnullです

は、クライアントからサーバへの要求を行うための私のコードです:

var formData = new FormData(); 
    formData.append("data", Blobx); 
    var request = new XMLHttpRequest(); 
    request.open('POST', '/Patient/pdfSavefile'); 
    request.send(formData); 

ここでファイルを取得するための私のコントローラのコードです。

 public bool pdfSavefile(FormCollection formdata) 
     { 
      var data = formdata["data"]; 
     } 

は私のWebConfigファイル私はすべてを試してみました

<httpRuntime targetFramework="4.6.2" maxRequestLength="1048576" requestValidationMode="2.0" executionTimeout="10000" /> 

に以下の持っている、何も実際に動作しません。私はかなりFormCollectionを使用することはありません

function base64ToBlob(base64, mime) 
{ 
    mime = mime || ''; 
    var sliceSize = 1024; 
    var byteChars = window.atob(base64); 
    var byteArrays = []; 

    for (var offset = 0, len = byteChars.length; offset < len; offset += sliceSize) { 
     var slice = byteChars.slice(offset, offset + sliceSize); 

     var byteNumbers = new Array(slice.length); 
     for (var i = 0; i < slice.length; i++) { 
      byteNumbers[i] = slice.charCodeAt(i); 
     } 

     var byteArray = new Uint8Array(byteNumbers); 

     byteArrays.push(byteArray); 
    } 

    return new Blob(byteArrays, {type: mime}); 
} 
+0

ですから、ファイルを 'data'の下に' pdfSavefile'にbase64文字列として投稿していますか? – scgough

+0

私が正しく覚えていれば、formdataはconsole.logにコンテンツを表示しません。 – xale94

+0

@scgoughいいえBase64Stringから変換されたBLOBであるペイロードをフォームデータとして投稿しています –

答えて

0

Base64Stringを変換するための

私のコードは、BLOBに、しかし、メモリが提供する場合、それだけで、文字列のキーと値のペアを受け入れます。投稿されたファイルはRequest.Filesコレクションにあるか、個別にHttpPostedFileBase paramsとして処理する必要があります。あなたが掲示されている他のフォームフィールドを持っている場合は、私が作成をお勧めしたい

public bool pdfSavefile(HttpPostedFileBase data) 

:あなたが投稿しているすべては、このファイルである場合たとえば、あなたがする必要があるのはすべてのアクションの署名を変更でFormCollectionに頼るのではなく、ビューモデルです。 MVCモデルバインダーはMVCの主なメリットの1つで、FormCollectionを使用して完全に取り除きます。

関連する問題