[ASP .NET 2.0] Ouverture d'un fichier depuis Navigateur web
Bonjour,
J'ai mon appli web qui est installé sur C: et j'ai un dossier rempli de fichiers sur D:
J'affiche dans un datagrid, la liste des fichiers, pour la suppression, je fais ça ( evenement row_deleting) et ça me suppirme le fichier
Code:
File.Delete(ConfigurationManager.AppSettings["dossierUpload"] + e.Keys["idcommun"].ToString() + "_" + e.Values["nom"]);
Par contre, pour la lecture d'une pices jointes, j'ai rajouté coté ASP, un lien de ce type
Code:
1 2 3 4 5 6
|
<asp:HyperLinkField DataNavigateUrlFields="idcommun,nom"
DataNavigateUrlFormatString="/upload/{0}_{1}" Target="_blank"
Text="Télécharger">
<ControlStyle ForeColor="Black" />
</asp:HyperLinkField> |
CA plante, il ne trouve pas le fichier, en fait il fait sa recherche dans le répertoire d'installion de l'appli web (qui est sur C:/). Ce qui ne me va pas.
Quelle solution adopté pour pouvoir lire un fichier à un autre endroit ?
Directement dans l'asp ?? Ou bien créer un autre evenement sur le datagrid pour pouvoir faire ça coté C#
Merci :yaisse2:
Utilisation de AppSettings avec une variable Get
Bonjour,
si je comprend bien, tu utilise la section AppSettings de ton fichier Web.Config pour stocker le repertoire des fichiers qui se trouve sur D:, le problème se pose donc ds le lien hypertext, dans ce cas la tu pourrais ajouter une nouvelle page dans ton projet qui s'appel par exemple, "OuvrirFichier.aspx", dans la méthode load de cette page tu lit n parametre designant le chemin de la piece jointe, seulement la au lieu de mettre la propriété "NavigationUrl" de ton hyperlink au fichier qui se trouve dans D:, tu met "OuvrirFichier.aspx?nomFich=nom_du_fichier" et dans la méthode Form_Load tu ajoute le code suivat:
le controle HyperLinkField
Code:
1 2 3 4 5 6
|
<asp:HyperLinkField DataNavigateUrlFields="idcommun,nom"
DataNavigateUrlFormatString="/OuvrirFichier.aspx?nomFich={1}" Target="_blank"
Text="Télécharger">
<ControlStyle ForeColor="Black" />
</asp:HyperLinkField> |
Dans le code de la nouvelle page que tu as ajoutée "OuvrirFichier.aspx", tu ajoute ce code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
protected void Page_Load(object sender, EventArgs e)
{
string paramFichier= Request.QueryString["nomFich"];
if(paramFichier==null) return; // si le parametre n'existe pas on fait rien
//ensuite tu lis le repertoire de tes fichiers a l'aide de AppSettings
//exactement comme tu l'as fait
string dossier= ConfigurationManager.AppSettings["dossierUpload"] ;
//et a la fin tu renvoie le fichier vers le navigateur
Response.TransmitFile(dossier+"/"+paramFichier);
} |
j'espere que ça t'aidera.
Cordialement.