Renvoyer le fichier à partir de l'API Web ASP.NET 5
Ma question précédente: Comment retourner un fichier à partir de ASP.net 5 web api
Je suis en train de renvoyer un fichier comme la réponse de l'API Web de la requête POST.
Je suis en utilisant dnx451 cadre et rc1-finale. Méthode de contrôleur:
[HttpPost("")]
public ActionResult Post([FromBody]DocumentViewModel vm)
{
try
{
if (ModelState.IsValid)
{
var Document = _repository.GetDocumentByGuid(vm.DocumentGuid, User.Identity.Name);
var Params = Helper.ClientInputToRealValues(vm.Parameters, Document.DataFields);
var file = Helper.GeneratePdf(Helper.InsertValues(Params, Document.Content));
FileStream stream = new FileStream(file,FileMode.Open);
return File(stream, "application/pdf", "test.pdf");
}
}
catch (Exception ex)
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return null;
}
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return null;
}
Comme résultat j'obtiens un fichier avec le nom "réponse". Après l'enregistrer en tant que pdf j'essaie de l'ouvrir, et il dit qu'il est endommagé. J'espère que vous pourrez m'aider. Je suis à l'aide de Facteur en tant que client de test.
Grâce
source d'informationauteur Joonas Püüa | 2016-01-18
Vous devez vous connecter pour publier un commentaire.
Veuillez voir ma réponse dans l'autre post: De retour d'un fichier de réponse
Pour la référence, je pense que cela correspond à vos besoins:
J'ai juste eu ce problème et trouvé une solution. Tant que vous avez un chemin d'accès absolu à votre fichier, puis vous pouvez revenir à une
PhysicalFileResult
et de définir explicitement leContent-Disposition
en-tête sur laResponse
comme suit:À l'aide de
PhysicalFile
a aussi l'avantage que tous les asynchrones streaming des octets et est donc pris en charge par le framework.C'est peut-être mieux d'envisager l'utilisation de la
FileStreamResult
action résultat.Cela a l'avantage de ne pas exiger que la totalité du contenu du fichier de la mémoire qui, en fonction de la taille du fichier, le niveau de trafic, etc. peut très facilement conduire à des problèmes d'échelle.
Quelque chose comme ceci: