2011-07-06 11 views
0

Je suis capable de télécharger et enregistrer d'autres types de fichiers dans Internet Explorer et je suis capable de télécharger et enregistrer les types pdf dans Firefox. Mais dans IE8, je ne peux pas télécharger un fichier pdf. J'ai vérifié le code wcf, il retourne un flux de fichier et comme je l'ai déjà mentionné, il fonctionne sur d'autres types de fichiers, comme .xlsx.ne peut pas enregistrer pdf dans IE

Voici mon formulaire sur la page html

<div> 
    <form id="frmdownloadData" action="http://localhost:9433/NASWcf1/runDownloadFile" 
    method="post" enctype="multipart/form-data" target="_blank"> 
    <input type="hidden" id="UserId" name="UserId" value="****" /> 
    File Name: <input id="filename" name="filename" type="text" value=""/> 
    <br /> 
    App Code: <input id="appcode" name="appcode" type="text" value="Appcode_FileId" /> 
    </form> 
</div> 
<input type="button" id="submitdwnldfrm" onclick="dofileDownload()" /> 

ici est le script pour le dofileDownload()

function dofileDownload() { 
     $('#frmdownloadData').ajaxSubmit(function() { 
      alert("Thank you for your comment!"); 
     }); 
    } 

Befopre retourner le flux de fichier à partir du WCF, je mets cette propriété: System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.ContentType = "application/octet-stream";

J'ai également essayé de le régler sur "application/pdf" mais cela n'aide pas.

toute aide serait appréciée.

+0

Comment voulez-vous dire «ça ne fonctionne pas? Est-ce que IE essaie de charger le pdf dans le navigateur au lieu d'enregistrer le fichier? Pouvez-vous essayer d'autres machines? – Jay

+0

IE peut être bizarre avec le plugin Adobe, si je me souviens bien. Essayez de changer le POST en GET, ou parfois nous avons dû ouvrir une fenêtre de navigateur vide, puis définir l'emplacement window.location à l'URL PDF après son ouverture. – sdcoder

+0

il ne le charge pas ou ne tente pas de le sauvegarder. Je travaille sur une machine virtuelle Windows 7, 64 bits. Son IE8 et je pense que c'est aussi 64 bits. Le code que j'ai posté fonctionne dans Firefox, mais échoue dans Chrome et Windows. Alors peut-être qu'il y a une meilleure façon de le faire. Les seuls outils que je dois utiliser, (exigences de conception) sont ajax et WCF. De plus, il n'y a pas d'URL pour le fichier .pdf. Cela fait partie d'une application web intranet qui permet aux utilisateurs de parcourir un dossier, sélectionner un fichier puis télécharger ce fichier. – edepperson

Répondre

0

trouvé une solution: Régler le ContentType = "application/x-inconnu" puis ajoutez cet en-tête "Content-Disposition: attachment; filename = filename.ext;"

Exemple de code ci-dessous:

System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.ContentType = "application/x-unknown"; 
       System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition: attachment; filename="+filename+";"); 
Questions connexes