2013-04-11 3 views
0

Je développe une application qui permet à l'utilisateur de télécharger un fichier Excel avec un contenu régulier (pas plus grand que quelques Mb).IE8 sur certaines pages le fichier de téléchargement ne fonctionne pas

Sur IE9, le fichier est téléchargé à la perfection, mais sur IE8 certaines pages permettant le téléchargement ne fonctionnent pas.

Une nouvelle page s'ouvre et se ferme immédiatement sans afficher la barre de téléchargement.

L'en-tête de contrôle de cache est défini sur privé.

J'ai désactivé tous mes IE8.

J'apparier la réponse du serveur pour la page qui ne permet le fichier de sauvegarde et celui qui fonctionne et ils correspondent exactement (à l'exception du chemin)

Je ne sais pas pourquoi certains cas le fichier se télécharge parfaitement et sur d'autres il ne le fait pas.

Voici le code côté serveur que j'utilise pour télécharger le fichier:

protected void GetExportedFile() 
{ 
    string filename = Form("filename"); 

    if (string.IsNullOrEmpty(filename)) 
    { 
     Logger.Instance.Write("GetExportedFile is missing the parameter filename"); 
     Response.Redirect("ErrorPage.aspx"); 
    } 

    string filePath = Context.Server.MapPath("****/****/" + filename); 

    Response.ClearHeaders(); 
    Response.ClearContent(); 
    SetContentType(ContentType.Excel); 
    Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", filename)); 
    Response.WriteFile(filePath); 

    Response.Flush(); 

    try 
    { 
     File.Delete(filePath); 
    } 
    catch (Exception ex) 
    { 
     Logger.Instance.Write(
      "GetExportedFile failed to delete the file '" + filePath + 
      "', Error: " + ex.ToString(), "Error"); 
    } 

    try 
    { 
     Response.End(); 
    } 
    catch (ThreadAbortException ex) 
    { 
     //Don't add anything here. 
     //because if you write here in Response.Write, 
     //that text also will be added to your text file. 
    } 
} 

Je dois mentionner, bien que je ne pense pas qu'il est pertinent avant les téléchargements qui ne fonctionnent pas sur IE8 Je suis faire quelques appels ajax pour obtenir avis si la génération excel a fini, tandis que sur la page qui fonctionne je ne fais pas cette procédure.

Je voudrais également ajouter que mon application réside derrière un pare-feu d'application (F5) et que lorsqu'elle est désactivée, tous les téléchargements fonctionnent sur IE8, le problème est que je ne vois aucun changement dans la réponse.

grâce

+0

Votre variable de nom de fichier contient-elle l'extension de fichier? –

+0

yes l'extension de fichier est xlsx – AMember

Répondre

1

Si quelqu'un voir ce post, j'ai trouvé la raison du problème. IE8 a une politique de sécurité qui ne permettra pas qu'un téléchargement de fichier soit appelé directement à partir d'une requête de script.

Comme j'ai invoqué une série d'appels ajax au serveur interrogeant l'état de création de fichier et que le fichier était prêt à émettre un appel de téléchargement, IE l'a annulé.

Pour remplacer la politique IE8, lorsque la création du fichier est terminée, j'ai ouvert une fenêtre avec un lien vers le fichier, lorsque ce lien a été cliqué, le fichier a été téléchargé avec succès.

J'espère que cela aidera quelqu'un un jour ...

Questions connexes