2010-11-16 6 views
0

Dans notre application, nous permettons à l'utilisateur de télécharger des documents qui peuvent être PDF, Doc, XLS, TXT. Les documents téléchargés seront sauvegardés sur le serveur Web. Nous devons afficher le lien pour chaque document téléchargé par l'utilisateur et lorsque l'utilisateur clique sur ce lien, il devrait ouvrir le document pertinent. On s'attend à avoir besoin d'un logiciel pour ouvrir les documents pertinents.Affichage du fichier en utilisant asp.net

Pour télécharger un document, nous utilisons la méthode saveAs du contrôle FileUpload et cela fonctionne parfaitement. Maintenant, comment l'afficher? Je crois que j'ai besoin de copier/télécharger le fichier sur l'ordinateur de l'utilisateur local et que j'ai besoin de l'ouvrir en utilisant Process.Start.

Pour cela, j'ai besoin de trouver le répertoire temporaire local de l'utilisateur. si je mets path.GetTempPath(), il me donne le répertoire du serveur web et copie le fichier là.

File.Copy(
    sPath + dataReader["url"].ToString(), 
    Path.GetTempPath() + dataReader["url"].ToString(), 
    true); 

Veuillez nous aviser.

Répondre

0

Ne pouvez-vous pas simplement mettre un lien sur la page pointant vers le répertoire dans lequel se trouvent les fichiers? par exemple. <a href=downloadedfiles/filename.pdf> click here </a>

1

Vous ne pouvez pas écrire sur le lecteur de l'utilisateur à partir du serveur Web.

Ce que vous pouvez est de simplement fournir un lien qui va télécharger le fichier au client. Définissez l'en-tête Content-Disposition sur "pièce jointe" pour afficher une boîte de dialogue "Enregistrer sous" ou sur "Inline" pour l'afficher dans le navigateur à l'aide du programme enregistré du client.

Vous pouvez créer un LinkButton avec un gestionnaire côté serveur qui contient le code comme ceci:

byte[] data = ...; // get the data from database or whatever 

Response.Clear(); // no contents of the aspx file needed 

Response.CacheControl = "private"; 
Response.ContentType = "application/pdf"; // or whatever the mimetype of your file is 
Response.AppendHeader("Content-Disposition", "attachment;filename=statistic.pdf"); 
Response.AppendHeader("Content-Length", data.Length.ToString(CultureInfo.InvariantCulture)); 

Response.BinaryWrite(data); 

Response.End(); // no further processing of the page needed 
0

Une fois que vous avez fourni le lien, votre travail est terminé. La plupart. Le navigateur du client va gérer le chargement du fichier lorsque le lien est cliqué, s'il peut gérer le type de fichier en fonction de l'extension du fichier.

Je préfère utiliser un gestionnaire http pour référencer les liens de fichiers sur une page Web. Cela sera important le jour où vous devrez mettre en place une sécurité pour l'accès aux fichiers téléchargés; sinon, n'importe quel utilisateur pourrait accéder à n'importe quel fichier.

0

Vous ne devez pas télécharger le fichier sur l'ordinateur de l'utilisateur.

// For pdf documents 
Response.Clear(); 
string filePath = "File path on the web server"; 
Response.ContentType = "application/pdf";  // for pdf 
Response.WriteFile(filePath); 

// For word documents 
Response.Clear(); 
string filePath = "File path on the web server"; 
Response.ContentType = "application/msword"; 
Response.WriteFile(filePath); 

// similarly other file types 
Questions connexes