Heim > Backend-Entwicklung > C++ > Wie extrahiere ich Dateibytes aus einem Multipart/Form-Data-POST-Stream in WCF REST?

Wie extrahiere ich Dateibytes aus einem Multipart/Form-Data-POST-Stream in WCF REST?

Barbara Streisand
Freigeben: 2025-01-01 02:45:15
Original
535 Leute haben es durchsucht

How to Extract File Bytes from a Multipart/Form-Data POST Stream in WCF REST?

So extrahieren Sie Dateibytes aus einem Multipart-/Formulardaten-POST-Stream in WCF REST

Wenn Sie eine Datei in einen WCF REST POSTEN Wenn ein Dienst über eine Multipart-/Formulardatenanforderung ausgeführt wird, enthält der resultierende Stream eine Folge von Grenzen, Headern und Dateibytes. Das Extrahieren der Dateibytes aus diesem Stream kann eine Herausforderung sein.

Lösung: Verwendung der öffentlichen API von Microsoft

Microsoft stellt eine Reihe öffentlicher APIs bereit, die diesen Prozess vereinfachen:

  • System.Net.Http.dll (enthalten in .NET 4.5 oder über NuGet für .NET 4)
  • System.Net.Http.Formatting.dll (über NuGet für .NET 4.5 und .NET 4)

Implementierung:

Dieser Codeausschnitt zeigt, wie man damit Dateibytes extrahiert APIs:

using System.Net.Http;
using System.Net.Http.Formatting;
using System.Threading.Tasks;

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

Beispielverwendung:

Wenn Sie eine WCF-REST-Methode haben, können Sie diese als solche implementieren:

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

Dateiverarbeitung:

In der MyProcessMethod können Sie die auszuführenden Aktionen angeben mit den extrahierten Dateibytes, z. B. durch Schreiben auf die Festplatte.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Dateibytes aus einem Multipart/Form-Data-POST-Stream in WCF REST?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage