Télécharger un fichier excel dans JQuery-AJAX demande de ASP.NET MVC
Dans mon ASP.NET projet MVC, j'ai généré un fichier excel à l'aide de ClosedXML.
Il fonctionne bien dans la non-appel ajax. Voici ma méthode d'action du contrôleur
//Prepare the response
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=\"" + reportHeader + ".xlsx\"");
//Flush the workbook to the Response.OutputStream
using (MemoryStream memoryStream = new MemoryStream())
{
MyWorkBook.SaveAs(memoryStream);
memoryStream.WriteTo(Response.OutputStream);
memoryStream.Close();
}
Response.End();
Maintenant, je suis en train de le faire via une requête ajax. Mais le fichier n'est pas envoyé à partir de contrôleur mvc.
$.ajax({
url: url,
type: "POST",
data: fd,
processData: false,
contentType: false,
beforeSend: function () {
},
success: function (response) {
},
error: function (request, status, error) {
},
complete: function () {
}
});
Comment puis-je accomplir?
Je vous remercie à l'avance.
Vous n'avez pas besoin d'un appel AJAX pour ce faire.
Je veux le faire en ajax réponse.
Jetez un oeil à ceci, puis. C'est du PHP mais c'est la façon dont je l'imagine.
Je veux le faire en ajax réponse.
Jetez un oeil à ceci, puis. C'est du PHP mais c'est la façon dont je l'imagine.
OriginalL'auteur s.k.paul | 2015-01-10
Vous devez vous connecter pour publier un commentaire.
Pourquoi pas?
ramiramilu a raison à propos de l'aide
window.location
etiframe
.J'ai fait la même chose, mais pour ASP.NET MVC3.
Je suggère d'utiliser le contrôleur qui renvoie
FileContentResult
Pour info sur
FileContentResult
MSDNEt enfin comment je l'ai fait (Contrôleur):
Dans le modèle (vous pouvez éliminer l'électricité statique si vous le souhaitez, et de l'appeler avec un exemple)
AJAX:
BTW, j'ai enlevé tous les gestionnaires d'exception pour simplifier le code, mais je suppose que Vous pouvez faire vous-même.
Id pour les iframe. Effet, en utilisant la même fenêtre.
statusCode partie résolu mon problème car il n'est pas de frapper la réussite. merci.
dois-je besoin d'ajouter de référence pour obtenir XlWorkbook dans MVC5?
Assurez-vous. Vous pouvez accéder au lien en question sur closedXML
OriginalL'auteur SouXin
Vous ne pouvez pas DIRECTEMENT télécharger un fichier à l'aide d'AJAX, mais vous pouvez télécharger un fichier à l'aide de
window.location
en conjonction avec l'AJAX pour rendre le fichier téléchargé. Ce que je veux dire c'est que si vous utilisez AJAX GET/POST tous le contenu du fichier dans la mémoire du navigateur, mais ne peuvent pas être enregistrées sur le disque (en raison de JavaScript limitations).Au lieu de cela, vous pouvez utiliser
window.location
pour pointer vers une URL qui va chercher le fichier et invite les enregistrer/ouvrir l'invite de commandes. Ou bien vous pouvez utiliser un cachéiFrame
et définir lasrc
attribut de l'iFrame avec l'URL à partir de laquelle va télécharger le fichier.si vous regardez le roi.code post, même ils ont utilisé de la fenêtre.emplacement. Pouvez-vous expliquer clairement la raison derrière en bas de vote?
Parce que vous indiquer clairement "vous ne pouvez pas télécharger un fichier à l'aide d'AJAX" en tant que votre première phrase ci-dessus. Qui, comme vous, de l'état plus tard dans votre post n'est pas vrai. À première vue, j'allais chercher une autre alternative, en raison de la façon dont vous avez présenté votre argument. Heureusement, j'ai lu la réponse de @king.le code ci-dessus et de trouver ce que je cherchais. Techniquement, vous êtes en droit de ne pas télécharger via AJAX, mais je voulais utiliser d'autres fonctionnalités de l'AJAX, avec l'aide de la fenêtre.emplacement. La façon dont vous présentez votre argument me fait penser que ce n'était pas possible.
D'accord avec votre point de vue, dans ce cas, un EDIT de rendre l'essence de la réponse la plus appropriée, que de projeter l'ensemble de la réponse comme bonne.
OriginalL'auteur ramiramilu