J'ai une page ASPX avec LinkButTons qui incendie JavaScript pour ouvrir une nouvelle page ASPX pour diffuser des fichiers sur le navigateur pour le téléchargement par les utilisateurs.
Lors du développement et du test unitaire sur XP SP3, c'est-à-dire 7 et Firefox 3.5, en utilisant Le code suivant (clé étant la partie "pièce jointe" dans la balise de disposition de contenu), la boîte de dialogue Invite une boîte de dialogue demandant si je veux enregistrer ou ouvrir le document, ce que je veux exactement ce que je veux arriver: P>
private void WriteFileToBrowser(Byte[] requestFile, string filename, String m_mimeType, String m_format) { Response.Clear(); Response.AddHeader("Content-Disposition", "attachment;filename=" + filename + "." + m_format); Response.ContentType = m_mimeType; Response.BinaryWrite(requestFile); Response.Flush(); }
5 Réponses :
Nous avons rencontré récemment un problème identique avec notre mise en œuvre pour télécharger des rapports générés dans notre cadre Web personnalisé. Les recherches nous ont conduits à essayer la même approche que vous avez mentionnée (définir la disposition de contenu). P>
Le problème est lié à IE7 et aux zones de sécurité. Par défaut, certaines actions doivent être explicitement initiées par l'utilisateur. Vous pouvez commencer par regarder Comprendre et travailler en mode protégé Internet Explorer et sur les restrictions de fenêtre p>
non liée à ce problème, mais vous devez citer le nom du fichier dans votre sortie. Les espaces du nom du fichier vont bousiller le nom du fichier lorsque vous téléchargez le fichier.
Essayez ceci p>
Bouton vide protégé1_click (expéditeur d'objet, evenargs e) { Réponse.Contenttype = "Application / PDF"; Réponse.clear (); Réponse.transmitfile ("test.pdf"); Réponse.end (); } p>
Si vous voyez dans mon exemple, le fichier n'est pas du système de fichiers, c'est un tableau d'octets im à l'aide de binarywrite () pour écrire sur le navigateur. Transmitfile () ne fonctionnera pas dans ce cas à moins que je n'assiste physiquement les fichiers sur le système.
Si vous allez ajouter votre page aux sites de confiance, vous seriez en mesure de télécharger le fichier. Tout en développant que tous vos sites que vous utilisez sont dans cette zone.
Vous pouvez essayer de forcer l'explorateur Internet en ajoutant p> à la fin de votre demande. < / p> sinon, vous pouvez essayer de poster le lien vers le document, le navigateur voit donc la demande comme réponse de l'interaction utilisateur. p> p>
Si ce n'est pas une nécessité qu'une nouvelle page soit ouverte à l'aide de JavaScript, vous pouvez utiliser une réponse.redirect () à la page ASPX. Cela devrait ouvrir la boîte de dialogue Enregistrer / ouvert. P>
J'ai essayé quelque chose de similaire et ça marche dans IE7,8. Pouvez-vous fournir la valeur exacte du m_mimeType que vous utilisez?
Pour tester IM en utilisant cela comme mime et format dans la liste des paramètres "Application / PDF", "PDF"
Avez-vous essayer les autres par ex. Application / Zip Quelque chose que IE7 ne peut pas s'afficher dans sa fenêtre.
pas encore. J'appelle une méthode de la WCF pour récupérer les octets et ce système ne stocke actuellement que des fichiers PDF, et ils m'ont dit qu'ils n'ont pas d'autres types de fichiers que leur logiciel peut convertir actuellement. Boiteux.
Microsoft fournit IE7, IE6 et IE8 VMS; Vous pouvez voir où se passe le changement.