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); } } }
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); }
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!