2017-11-13 10 views
2

Ich frage mich, wie Sie die Swagger-Benutzeroberfläche generieren würden, um eine Datei als Stream auf den ASP.net Core-Controller hochzuladen.Wie hochzuladen Datei von Swagger zu streamen?

Hier ist ein Link, der den Unterschied zwischen dem Hochladen kleiner Dateien im Vergleich zu großen Dateien beschreibt.

Hier ist der Link zum Beschreiben, wie der Upload für eine kleine Datei implementiert wird, aber es wird nicht erläutert, wie ein Stream implementiert wird.

https://www.janaks.com.np/upload-file-swagger-ui-asp-net-core-web-api/

Danke, Derek

Antwort

0

Ich bin nicht bekannt, dass Fähigkeit mit Stream Art (en) auf die Anforderungsparameter direkt zu arbeiten, aber die IFormFile Schnittstelle schreibt vor, die Fähigkeit, mit Streams zu arbeiten . So würde ich halten den IFormFile Typ in Ihrer Anfrage params, dann entweder:

  • es in voller Kopieren auf einen Speicherstrom OR
  • Öffnen Sie den Strom für

In meinem Fall habe ich gelesen die Basis 64 Bytes in voller wollte (und meine Dateien sind nur ein paar hundert kbs) so habe ich so etwas wie dieses:

string fileBase64 = null; 
using (var memStream = new MemoryStream()) 
{ 
    model.FormFile.CopyTo(memStream); 
    fileBase64 = Convert.ToBase64String(memStream.ToArray()); 
} 

Die MemoryStream ist wahrscheinlich nicht in Ihrem Fall geeignet; wie Sie große Dateien erwähnt haben, die Sie nicht vollständig im Speicher behalten möchten.

So würde ich vorschlagen, um den Strom zum Lesen öffnen, z.B .:

using (var fileStream = model.FormFile.OpenReadStream()) 
{ 
    // Do yo' thang 
} 
Verwandte Themen