Je souhaite renvoyer un fichier dans mon contrôleur API Web ASP.Net, mais toutes mes approches renvoient le HttpResponseMessage
en tant que JSON.
public async Task<HttpResponseMessage> DownloadAsync(string id)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent({{__insert_stream_here__}});
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
return response;
}
Lorsque j'appelle ce noeud final dans mon navigateur, l'API Web renvoie HttpResponseMessage
sous forme de fichier JSON avec l'en-tête de contenu HTTP défini sur application/json
.
S'il s'agit d'ASP.net-Core, vous mélangez des versions d'API Web. Demandez à l'action de renvoyer un dérivé IActionResult
car, dans votre code actuel, le cadre traite HttpResponseMessage
comme un modèle.
[Route("api/[controller]")]
public class DownloadController : Controller {
//GET api/download/12345abc
[HttpGet("{id}"]
public async Task<IActionResult> Download(string id) {
Stream stream = await {{__get_stream_based_on_id_here__}}
if(stream == null)
return NotFound(); // returns a NotFoundResult with Status404NotFound response.
return File(stream, "application/octet-stream"); // returns a FileStreamResult
}
}