Zurückgeben von Dateiinhaltsergebnissen in die ASP.NET-Web-API
Während FileContentResult
in MVC-Controllern gut zum Bereitstellen von Dateien wie PDFs funktioniert, stellt die direkte Portierung auf ein ApiController
Herausforderungen dar. Ein einfacher Versuch, StreamContent
zu verwenden, schlägt häufig fehl und führt zu JSON-Metadaten anstelle der Datei selbst. Die Lösung liegt in der Nutzung von ByteArrayContent
.
Dieses überarbeitete Code-Snippet gibt effektiv eine PDF-Datei als Dateiinhaltsergebnis einer Web-API zurück:
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // Process the stream to generate PDF content here... var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(stream.ToArray()) }; result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "CertificationCard.pdf" }; result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return result; } }</code>
Der Schlüssel besteht darin, ByteArrayContent
zu verwenden, um die Bytes der Datei zu kapseln und den ContentDisposition
-Header auf „attachment“ zu setzen, um einen Download zu veranlassen. Der ContentType
-Header gewährleistet die ordnungsgemäße Handhabung durch den Client. Beachten Sie die Verwendung von using
, um sicherzustellen, dass das MemoryStream
ordnungsgemäß entsorgt wird. Dieser Ansatz ermöglicht die nahtlose Bereitstellung von PDFs und anderen Dateitypen über Ihre Web-API.
Das obige ist der detaillierte Inhalt vonWie gebe ich ein Dateiinhaltsergebnis von einer ASP.NET-Web-API zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!