Mit meiner Web-App können Benutzer derzeit Medien einzeln nacheinander hochladen:
%Vor%Das Medium wird dann an einen WebApi-Controller gesendet:
%Vor%Was dann etwas wie folgt macht:
%Vor%Dies funktioniert hervorragend für einzelne Uploads, aber wie kann ich das ändern, um gebündelte Uploads von multiplen Dateien durch einen einzigen Streaming-Vorgang zu unterstützen, der ein Array von hochgeladenen Dateinamen zurückgibt? Dokumentation / Beispiele dazu scheinen spärlich.
%Vor% Angenommen, Ihr AzureStorageMultipartFormDataStreamProvider
ist der gleichen Klasse ähnlich, die auf dieser Blog , der bereits mehrere Dateien verarbeitet, wenn die Anfrage mehrere Dateien enthält.
Sie müssen also nur Ihre UploadFile
ändern, um eine IEnumerable<string>
zurückzugeben und Ihren Controller so zu ändern, dass mediaPath
als solcher angezeigt wird.
Ihr MediaService hätte also:
%Vor%Und Ihr Controller hätte:
%Vor%Da Sie die zugehörigen Codes nicht mit der AzureStorageMultipartFormDataStreamProvider-Klasse veröffentlichen.
Also erstelle ich einen benutzerdefinierten AzureStorageMultipartFormDataStreamProvider, der vom MultipartFileStreamProvider erbt, um den Web-API-Upload stapelweiser Uploads mehrerer Dateien zu ermöglichen.
Im AzureStorageMultipartFormDataStreamProvider könnten wir die ExecutePostProcessingAsync-Methode überschreiben.
Bei dieser Methode könnten wir die Daten der Upload-Datei erhalten, dann könnten wir diese Daten in den azurblauen Speicher hochladen.
Weitere Details finden Sie unter den folgenden Codes. Der gesamte Controller.
%Vor%Das Ergebnis wie folgt:
Ich überprüfte das Hochladen der Medien direkt in den Blobspeicher, nachdem Sie in einer Anforderung das SAS-Token für alle Ihre Dateien von der Web-API erhalten haben. Laden Sie die Dateien mit einem Versprechen und http get von Ihrem Client hoch, der den Upload parallelisiert. Welches ist dein richtiger Entwurf und Ansatz. Dies erhöht auch die Upload-Geschwindigkeit und reduziert die Latenz.
Tags und Links asp.net-web-api javascript azure c# azure-storage-blobs