Redirection d'une page d'un fichier PDF à télécharger
J'ai un aspx (disons 1.aspx) de la page à partir de laquelle d'abord, je suis le téléchargement d'un fichier pdf et ensuite, je veux rediriger vers des Remerciements.page aspx. Le code est: est-ce
protected void btnSubmit_Click(object sender, EventArgs e)
{
string pathId = string.Empty;
if (Page.IsValid)
{
try
{
pathId = hidId.Value;
DownloadPDF(pathId);
Response.Redirect("Thanks.aspx");
}
catch (Exception ex)
{
throw ex;
}
}
}
protected void DownloadPDF(string pathId)
{
if (!(string.IsNullOrEmpty(pathId)))
{
try
{
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + pathId + ".pdf");
string path = ConfigurationManager.AppSettings["Pdf_Path"].ToString() + "\\" + pathId.Trim() + ".pdf";
Response.TransmitFile(path);
}
catch (Exception ex)
{
throw ex;
}
finally
{
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
}
}
Le problème est que, dans la boîte de dialogue d'enregistrement de fichier est venue correctement et je suis en mesure de télécharger le fichier aussi, mais il n'est pas redirigé vers la Grâce.page aspx.
Comment résoudre ce problème?
OriginalL'auteur priyanka.bangalore | 2010-02-18
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé plus facile de mettre le téléchargement de PDF page dans un iframe. De cette façon, vous pouvez activer le fichier PDF à télécharger sur le côté client en pointant simplement l'iframe de la source vers le fichier PDF de la page de téléchargement. Après cela, vous pouvez soit passer à une nouvelle page, ou tout simplement afficher le texte de remerciement droite que sur la page qui contient l'iframe.
OriginalL'auteur WVDominick
Si le fichier est téléchargé, pas de pré-traitement est terminé, vous pouvez essayer ce qui suit:
Où le nombre est le nombre de secondes avant l'actualisation est faite 🙂
Cette méthode est beaucoup mieux d'utiliser dans tous les cas où vous souhaitez transférer ou de les rediriger vers une autre page après toute action, après un certain délai. Ce ne sera pas causer des erreurs de Réponse.Redirection peut par abandon d'une thread. Si une image n'est pas une bonne solution, cette solution devrait certainement être utilisé.
ne fonctionne pas sous chrome
ne fonctionne pas sous IE...
Je suis d'accord avec MichaelBrennt et Speuline. Ne fonctionne pas dans Firefox. Ou peut-être je viens de le sucer.
OriginalL'auteur wintermute
En HTTP, une demande ne peut avoir qu'une seule réponse. Depuis la première réponse est le fichier PDF, les secondes de réponse (c'est à dire la redirection) ne peut pas être mis en œuvre.
Vous pouvez essayer de repenser les deux pages en le redirigeant grâce.aspx et ont merci.aspx les télécharger automatiquement.
OriginalL'auteur devio
Une Réponse.Rediriger envoie une réponse au navigateur qui dit en gros cette ressource a été déplacée à une autre URL. Cependant, vous essayez d'envoyer un fichier vers le bas dans une réponse trop, de sorte que ces deux choses sont probablement heurter les uns les autres. Essayez de lui envoyer un peu de JavaScript qui envoie vers la page que vous souhaitez envoyer eux aussi, au lieu d'utiliser une Réponse.Rediriger.
OriginalL'auteur Brandon Montgomery
Voir l'article mentionné dans ce accepté de répondre: https://stackoverflow.com/a/11018277/1037864
(lien direct: http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser/)
L'idée est de définir un cookie et de l'envoyer avec le fichier. En attendant, vous laissez la page d'attente du bloc de l'INTERFACE utilisateur alors qu'il est en attente pour le cookie à arriver.
OriginalL'auteur Björn