반응형
ASP.NET WebApi: WebApi HttpClient를 사용하여 파일 업로드로 다중 파트 게시를 수행하는 방법
다음과 같은 간단한 양식에서 업로드를 처리하는 WebApi 서비스가 있습니다.
<form action="/api/workitems" enctype="multipart/form-data" method="post">
<input type="hidden" name="type" value="ExtractText" />
<input type="file" name="FileForUpload" />
<input type="submit" value="Run test" />
</form>
하지만 HttpClient API를 사용하여 동일한 게시물을 시뮬레이션하는 방법을 찾을 수 없습니다.그FormUrlEncodedContent
비트는 충분히 간단하지만, 이름이 있는 파일 내용을 게시물에 추가하려면 어떻게 해야 합니까?
많은 시행착오 끝에 실제로 작동하는 코드는 다음과 같습니다.
using (var client = new HttpClient())
{
using (var content = new MultipartFormDataContent())
{
var values = new[]
{
new KeyValuePair<string, string>("Foo", "Bar"),
new KeyValuePair<string, string>("More", "Less"),
};
foreach (var keyValuePair in values)
{
content.Add(new StringContent(keyValuePair.Value), keyValuePair.Key);
}
var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "Foo.txt"
};
content.Add(fileContent);
var requestUri = "/api/action";
var result = client.PostAsync(requestUri, content).Result;
}
}
@Michael Tepper님의 답변에 감사드립니다.
메일건(이메일 제공자)에 첨부 파일을 게시해야 했고 첨부 파일이 허용되도록 약간 수정해야 했습니다.
var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(fileName));
fileContent.Headers.ContentDisposition =
new ContentDispositionHeaderValue("form-data") //<- 'form-data' instead of 'attachment'
{
Name = "attachment", // <- included line...
FileName = "Foo.txt",
};
multipartFormDataContent.Add(fileContent);
나중에 참조할 수 있도록 여기에 있습니다.감사해요.
의 다양한 하위 클래스를 찾아야 합니다.HttpContent
.
다중 형식 http 컨텐츠를 만들고 여기에 다양한 부분을 추가합니다.이 경우 다음 행을 따라 인코딩된 바이트 배열 내용 및 양식 URL이 있습니다.
HttpClient c = new HttpClient();
var fileContent = new ByteArrayContent(new byte[100]);
fileContent.Headers.ContentDisposition
= new ContentDispositionHeaderValue("attachment")
{
FileName = "myFilename.txt"
};
var formData = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("name", "ali"),
new KeyValuePair<string, string>("title", "ostad")
});
MultipartContent content = new MultipartContent();
content.Add(formData);
content.Add(fileContent);
c.PostAsync(myUrl, content);
언급URL : https://stackoverflow.com/questions/10339877/asp-net-webapi-how-to-perform-a-multipart-post-with-file-upload-using-webapi-ht
반응형
'programing' 카테고리의 다른 글
iOS: 포인트가 rect 내부에 있는지 확인 (0) | 2023.07.01 |
---|---|
Swift에서 UI_USER_INTERFACE_IDIOM()을 사용하여 현재 디바이스 탐지 (0) | 2023.07.01 |
Python의 s= "안녕하세요, %s"에 해당하는 루비는 무엇입니까?%s은(는) 어디에 있습니까?" %("John", "Mary")" (0) | 2023.07.01 |
BOM 폼을 가져올 때 Spring Boot에서 버전 번호를 재정의하는 방법은 무엇입니까? (0) | 2023.07.01 |
R에 객체(변수)가 정의되어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.07.01 |