Heim > Backend-Entwicklung > C++ > Wie kann ich Dateibytes aus einer mehrteiligen/Formulardaten-POST-Anfrage in .NET extrahieren?

Wie kann ich Dateibytes aus einer mehrteiligen/Formulardaten-POST-Anfrage in .NET extrahieren?

DDD
Freigeben: 2025-01-04 14:24:38
Original
813 Leute haben es durchsucht

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

Extrahieren von Dateibytes aus Multipart-/Formdaten-POST

In einem Multipart-/Formdaten-POST werden die Dateidaten in eingebettet Stream anfordern. Dies stellt eine Herausforderung für das Extrahieren der Dateibytes auf der Serverseite dar. Eine Lösung besteht darin, die öffentlichen APIs von Microsoft zu nutzen, um den mehrteiligen Inhalt zu analysieren.

Implementierung

Um die mehrteiligen Daten mithilfe der Microsoft-API zu analysieren, benötigen Sie System.Net.Http .dll- und System.Net.Http.Formatting.dll-Assemblys. Für .NET 4.5 sind diese Assemblys enthalten. Laden Sie sie für .NET 4 über NuGet herunter.

Mit den referenzierten Assemblys können Sie die Parsing-Logik implementieren:

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);
        }
    }
}
Nach dem Login kopieren

Um diesen Code zu verwenden, können Sie eine WCF-REST-Methode wie implementieren Folgendes:

[OperationContract]
[WebInvoke(Method = WebRequestMethods.Http.Post, UriTemplate = "/Upload")]
void Upload(Stream data)
{
    MultipartParser.ParseFiles(
           data, 
           WebOperationContext.Current.IncomingRequest.ContentType, 
           MyProcessMethod);
}
Nach dem Login kopieren

Durch die Verwendung der APIs von Microsoft können Sie die Dateibytes effektiv aus mehrteiligen/Formulardaten-POST-Anfragen extrahieren. So können Sie die Dateien auf die Festplatte schreiben.

Das obige ist der detaillierte Inhalt vonWie kann ich Dateibytes aus einer mehrteiligen/Formulardaten-POST-Anfrage in .NET extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage