2013-04-14 1 views
3

.csv 파일을 업로드 할 수 있도록 내 서버에 API 호출을 만들려고합니다.C# setting uploadFile content-Type

클라이언트 측 코드

string url = "http://testserver/testapi"; 
string filePath = @"C:\test.csv"; 
using (WebClient wc = new WebClient()) 
{ 
    wc.Headers.Add("Content-Type", "text/plain"); 
    byte[] responseArray = wc.UploadFile(url, filePath); 
} 

서버 측 코드

string savePath = testSavePath; 
foreach (string f in Request.Files.AllKeys) 
{ 
    HttpPostedFileBase file = Request.Files[f]; 
    file.SaveAs(savePath); 
} 

나는이 줄에 예외를 얻고있다 byte[] responseArray = wc.UploadFile(url, filePath);

이상한 것은 내가 Request 볼 때 나는

를 볼 수 있다는 것입니다

ContentType="multipart/form-data; boundary=---------------------8d006b7c2a5452c" .

WebException이이 The Content-type header begins with multipart.

내 질문은 왜 contentType이 여러 부분으로 설정지고 있습니다 때 발생합니다 그리고 내가 그렇게에서 어떻게 방지 할 것을 내가 볼을 UploadFile에 대한 문서를 보면?

+0

예외는 무엇입니까? –

+0

'wc.Headers.Add ("Content-Type", "text/plain");을 제거하면 작동합니까? –

답변

4

귀하의 클라이언트 코드는 괜찮아 보입니다. 서버 측에서 예외가 발생할 수 있습니다. 그러나 예외를 공유하지 않으므로 판단하기가 어렵습니다. 제발, 당신은 더 나은 대답을 얻을 것입니다. 멀티 파트의 콘텐츠 유형에 대해

는 다음 WebClient.UploadFile는 (설정되어 있지 않은 경우 application/octet-stream을 디폴트) 파일의 내용 유형에 대한 Content-Type 헤더의 값이 아닌 전체 HTTP 요청을 사용합니다. 실제 HTTP 요청은 항상 (발견 한대로) multipart/form-data (파일 업로드를위한 HTTP 사양에 따라)이며 변경할 수 없으며 변경할 수 없습니다. 설명서의 참고는 실제 파일의 내용 유형을 나타냅니다. 즉, WebClient에게 멀티 파트 인 파일을 업로드하도록 요청할 수 없음을 의미합니다 (다른 멀티 파트 HTTP 봉투로 래핑 됨).