>백엔드 개발 >C++ >.NET의 다중 부분/양식 데이터 POST 요청에서 파일 바이트를 추출하려면 어떻게 해야 합니까?

.NET의 다중 부분/양식 데이터 POST 요청에서 파일 바이트를 추출하려면 어떻게 해야 합니까?

DDD
DDD원래의
2025-01-04 14:24:38809검색

How Can I Extract File Bytes from a Multipart/Form-Data POST Request in .NET?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.