2011-05-10 6 views
1

J'ai un fichier au format .pdf pour mon site Web.ouvrir la boîte de dialogue Enregistrer sous

Si vous cliquez sur le lien, le logiciel ouvrira Adobe Reader et ouvrira le fichier.

Ce que je veux faire est quand vous faites un clic gauche, il ouvre une boîte de dialogue qui vous demande où vous voulez

pour enregistrer le fichier.

Je sais que vous pouvez le faire en cliquant à droite et en choisissant Enregistrer sous, mais est-il une manière en

un simple clic gauche pour télécharger il?

Répondre

2

Je suis sûr qu'il existe une sorte de hack pour ce faire, mais c'est la fonctionnalité qui est installée avec le navigateur lorsque Adobe Reader est installé sur la machine. Garder cela cohérent pour tous les utilisateurs est la meilleure approche. Ne vous embêtez pas à essayer de faire le clic gauche ouvrir une boîte de dialogue de sauvegarde. Les utilisateurs sont habitués à ce comportement et sauront comment enregistrer le PDF sur leur disque dur local

La cohérence est la clé ici.

0

Ajouter le pdf dans un dossier zip et ajouter un lien vers le dossier zip

0

Retirez l'emplacement pdf de la partie href de votre lien, et le code d'une méthode onClick à la place.

<a href="#" onClick="$:openSaveDialog"> 

<script> 
function openSaveDialog() { 
    //Write a JavaScript function to prompt the user with a Save Dialog Box. 
} 
</script> 
1

deux parties, vous devez convertir le pdf en un flux d'octets et ajouter un en-tête de disposition de contenu à la réponse html.

d'abord obtenir le fichier et le flux d'un tableau d'octets

public byte[] GetDocument(string filePath) 
    { 
     return File.ReadAllBytes(filePath); 
    } 

Ensuite, envoyez - comme la première chose dans l'événement Page_Load - vous devrez passer le chemin du fichier par session ou requête chaîne vers une nouvelle page, car vous ne pouvez pas modifier le type de contenu sur une page existante que vous avez déjà vue dans le navigateur.

    Byte[] fileData = GetDocument(filePath); 

        Response.Clear(); 
        Response.ClearHeaders(); 
        Response.ClearContent(); 
        Response.ContentType = "application/pdf"; 

        // prompt to download 
        Response.AppendHeader("content-disposition", "attachment; filename=declarations.pdf"); 
        Response.AppendHeader("content-length", fileData.Length.ToString()); 

        Response.BinaryWrite(fileData); 
        Response.Flush(); 
        Response.Close(); 
Questions connexes