2017-05-03 8 views
0

크기 "4682933"의 자바 스크립트 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 매개 변수로 처리해야합니다. 당신이 게시되고 다른 양식 필드이있는 경우

public bool pdfSavefile(HttpPostedFileBase data) 

것은, 내가 만드는 게 좋을 것 : 당신이 게시하는 모든이 파일 인 경우 예를 들어, 당신이해야한다 모두에 작업 서명을 변경입니다 FormCollection에 의존하는 대신보기 모델 MVC modelbinder는 MVC의 주요 이점 중 하나이며, 여러분은 완전히 FormCollection을 사용하여이를 완전히 버리고 있습니다.