2017-10-10 11 views
0

나는 type="file"이라는 input 태그와 Ajax를 사용하여 파일을 Webapi 끝점으로 보내는 기능이 있습니다.

Ajax를 사용하여 html 입력에서 WebApi로 파일 보내기 - 인코딩 문제

$('#myInput').change(function() { 
    if (this.files[0] === undefined) return; 
    sendToWebapi(this.files[0]); 
    this.value = null; 
}); 

function sendToWebapi(file) { 
    const data = new FormData(); 
    data.append('file', file); 
    $.ajax({ 
     url: "myWebApiPath", 
     contentType: "text/csv", 
     processData: false, 
     method: "POST", 
     data: data 
    }); 
} 

내 문제는 WebApi에 보낼 때 프랑스어 문자가 제대로 인코딩되지 않은 것입니다.

> ------WebKitFormBoundaryggBmtBMylhc9eoIE 
Content-Disposition: form-data; name="file"; filename="myfile.csv" 
Content-Type: application/vnd.ms-excel 

Date;Pi�ce;Journal;Libell�;D�bit;Lettrage;Cr�dit;Solde 
.... 

답변

0

하는 것은 명시 적으로 캐릭터 세트를 설정해보십시오 : 요청 본문의 추출물 아래 참조 캐릭터 세트를 추가하는 동안 명시 적으로 내 요청 몸이 제대로 표시되지 이어진

function sendToWebapi(file) { 
    const data = new FormData(); 
    data.append('file', file); 
    $.ajax({ 
     url: "myWebApiPath", 
     contentType: "text/csv;charset=ISO-8859-1", 
     processData: false, 
     method: "POST", 
     data: data 
    }); 
} 
+0

참고, 내 엔드 포인트는 여전히 이전처럼 문자열을 볼 . –

+0

@ François "내 끝점에서 문자열을 이전과 같이 계속 봅니다"는 의미는 무엇입니까? – Oscar

+0

Myenpoint 서명은 Task MyEndpointAsync ([FromBody] List 행)입니다. 행의 각 행은 D bit과 같은 것을 볼 수 있습니다. –