2011-03-16 2 views
0

J'essaie d'obtenir des documents (par exemple pdf, Excel, Word Doc, etc) pour ouvrir dans une boîte de téléchargement. pour une raison quelconque, les fichiers Excel fonctionnent correctement, mais aucun des autres ne le font. Je pense que j'ai besoin de setHeader en utilisant javascript (je crois que jquery n'a pas de fonctions de base qui font cela, mais corrigez-moi si je me trompe). voici un échantillon de mon code.force mot docs, pdf, xls, etc à télécharger en cliquant sur un lien avec jquery

$(function() { 
    $('a.media-link').click(function(event){ 
     var fileName = $(this).html(); 
     var property_id = $("input[name=capturePropId]").val(); 
     //alert(fileName); 
     event.preventDefault(); //stop the browser from following 
     window.location.href = '../uploads/properties/'+ 
     property_id+'/media/'+fileName+''; 
     response.setHeader("Content-Disposition", "attachment; 
     filename=\"" + fileName + "\""); 
    }); 
}); 

Quand je fais cela, je reçois une erreur « réponse response.setHeader est undefinded. Quelqu'un at-il des idées?

Répondre

1

Vous devez définir les en-têtes différemment pour chaque type de fichier. Jetez un oeil here.

1

Vous ne pouvez pas modifier la réponse du serveur avec JavaScript et vous ne pouvez pas contrôler comment le navigateur décide d'ouvrir un nouveau lien en dehors de la sélection de cette/nouvelle fenêtre Il appartient au serveur de décider quoi retourner pour votre requête. peut répondre avec la même image JPG pour toutes les demandes ou n'importe quel autre type de réponse

Vous devez placer le code qui définit les en-têtes sur le serveur qui sert la demande. Vous avez le code correct si votre serveur est ASP.Net un (http://support.microsoft.com/kb/260519).

+0

ok je suis avec vous jusqu'ici. Je suppose que je suis confus sur où dans le fichier mon php je dois définir l'en-tête. Peut-être que mes fichiers sont aussi mélangés avec des langues différentes. J'ai des onglets jquery allant une diapositive jquery allant toutes sortes de données tirées de la base de données. cela ne vous aide probablement pas à mieux comprendre pourquoi je ne peux toujours pas saisir ce concept, mais il pourrait le faire. Je comprends comment faire à votre façon si j'ai soumis un formulaire, mais je ne peux pas comprendre comment définir l'en-tête d'une balise d'ancrage. –

+0

Vous ne pouvez pas définir les en-têtes des ensembles en JavaScript et définir les en-têtes côté serveur qui génèrent la page avec le lien n'aideront pas. Vous devez définir cet en-tête sur le serveur sur le gestionnaire d'URL qui renvoie les fichiers. Dans votre cas, il semble que vous deviez faire en sorte que ../uploads/properties/XXX/media/FILE.NAME Urls soit géré par votre code serveur (PHP) et renvoie le flux de fichier avec les en-têtes supplémentaires. –

Questions connexes