Multipart/Form-Data POST에서 파일 바이트 추출
multipart/form-data POST에서 파일 데이터는 요청 스트림. 이는 서버 측에서 파일 바이트를 추출하는 데 어려움을 겪습니다. 한 가지 해결책은 Microsoft의 공개 API를 활용하여 멀티파트 콘텐츠를 구문 분석하는 것입니다.
구현
Microsoft의 API를 사용하여 멀티파트 데이터를 구문 분석하려면 System.Net.Http가 필요합니다. .dll 및 System.Net.Http.Formatting.dll 어셈블리. .NET 4.5의 경우 이러한 어셈블리가 포함됩니다. .NET 4의 경우 NuGet을 통해 다운로드하세요.
참조된 어셈블리를 사용하여 구문 분석 논리를 구현할 수 있습니다.
public static async Task ParseFiles( Stream data, string contentType, Action<string, Stream> fileProcessor) { var streamContent = new StreamContent(data); streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType); var provider = await streamContent.ReadAsMultipartAsync(); foreach (var httpContent in provider.Contents) { var fileName = httpContent.Headers.ContentDisposition.FileName; if (string.IsNullOrWhiteSpace(fileName)) { continue; } using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { fileProcessor(fileName, fileContents); } } }
이 코드를 사용하려면 다음과 같은 WCF REST 메서드를 구현할 수 있습니다. 다음:
[OperationContract] [WebInvoke(Method = WebRequestMethods.Http.Post, UriTemplate = "/Upload")] void Upload(Stream data) { MultipartParser.ParseFiles( data, WebOperationContext.Current.IncomingRequest.ContentType, MyProcessMethod); }
Microsoft의 API를 활용하면 다음에서 파일 바이트를 효과적으로 추출할 수 있습니다. multipart/form-data POST 요청을 통해 디스크에 파일을 쓸 수 있습니다.
위 내용은 .NET의 다중 부분/양식 데이터 POST 요청에서 파일 바이트를 추출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!