2017-05-03 17 views
0

我試圖發送一個尺寸爲「4682933」的javascript blob,並輸入從Base64String轉換而來的「image/png」。我無法在服務器上檢索任何內容。 FormCollection對象始終爲空。發送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" /> 

我已經試過各種以下,沒有什麼真正的作品。

我轉換Base64String代碼BLOB

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

那麼,你是否將該文件作爲base64字符串發佈到'data'字段下的'pdfSavefile'? – scgough

+0

如果我沒有記錯,formdata從不在console.log中顯示其內容。 – xale94

+0

@scgough不,我把它作爲表單數據發佈,它是從Base64String轉換成blob的有效載荷 –

回答

0

我幾乎從來不使用FormCollection,但如果沒有記錯,它只接受字符串鍵值對。任何發佈的文件將在Request.Files集合中找到,或者需要單獨作爲HttpPostedFileBase參數處理。舉例來說,如果你要發佈這個文件,你應該需要做的是動作的簽名改爲:

public bool pdfSavefile(HttpPostedFileBase data) 

如果您有正在張貼其他表單字段,我建議創建一個視圖模型,而不是依靠FormCollection。 MVC modelbinder是MVC的主要優點之一,你幾乎可以完全使用FormCollection

相關問題