retour PDF dans la requête ajax
J'ai une requête ajax sur mon Serveur où je suis, la création d'un Fichier PDF. Maintenant, je veux afficher ce fichier dans une nouvelle fenêtre/onglet ou il suffit de le télécharger. comment puis-je le faire?
ma demande
$.ajax({
url: '/Document/CreatePDF',
type: 'POST',
data: {
docid: documentId,
dataId: array
},
traditional: true,
success: function (data) {
}
});
[HttpPost]
public FileStreamResult CreatePDF(long docid, List<long> dataId)
{
var document = _rep.LoadDocument(docid.ToString(), Server.MapPath("~/Documents/") + docid + ".xml");
var exporter = new PDFExporter(document);
MemoryStream fileStream = exporter.CreatePDF();
byte[] PdfByte = fileStream.GetBuffer();
fileStream.Flush();
fileStream.Close();
HttpContext.Response.AddHeader("content-disposition","attachment; filename=form.pdf");
return new FileStreamResult(fileStream, "application/pdf");
}
- Je pense que vous devez envoyer un formulaire sur le serveur ou le retour d'une adresse à la création de document pdf qui le javascript peut transférer le navigateur dans une nouvelle fenêtre...
- Solution générale: Cela a fonctionné pour moi (PDF boîte de dialogue modale à partir d'un byte[] par le biais d'un MVC-appel ajax) <stackoverflow.com/questions/15477525/...>
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser AJAX pour télécharger les fichiers. La raison pour cela est parce que le javascript ne vous permettra pas d'enregistrer le contenu téléchargé sur l'ordinateur client, ni pour demander un dialogue Enregistrer sous. Vous devez utiliser un simple HTML
<form>
ou un point d'ancrage:Si vous avez besoin pour passer des arguments à cette action de contrôleur qui ne sont connus que chez le client, vous pouvez vous abonner à la
.submit
événement de ce formulaire et dynamiquement injecter cachés dans les champs avec les valeurs correspondantes, puis laissez la valeur par défaut de l'action à exécuter. Et si les valeurs sont connues sur le côté serveur, vous devez simplement utiliser de l'HTML helpers pour générer les champs cachés.