Dans mon projet, j'ai un dossier contenant un nombre N de fichiers. J'ai besoin d'une fonctionnalité permettant à la page d'avoir des liens pour tous ces fichiers afin que le client puisse les télécharger.
Pour cela, j'ai créé dynamiquement des boutons de lien et lié chaque fichier avec chaque bouton de lien.
Le code est le suivant
string filePath = Request.PhysicalPath.Substring(0, Request.PhysicalPath.LastIndexOf("\\"));
filePath = filePath.Substring(0, filePath.LastIndexOf("\\"));
filePath = filePath.Substring(0, filePath.LastIndexOf("\\")) + "\\Export";
string[] files = System.IO.Directory.GetFiles(filePath);
Array.Sort(files);
Array.Reverse(files);
int counter = 0;
foreach (string file in files)
{
if (counter >= 10)
break;
LinkButton linkButton = new LinkButton();
int startIndex = Convert.ToInt32(file.LastIndexOf("\\"));
int length = Convert.ToInt32(file.Length);
string fileName = file.Substring(startIndex + 1, length - startIndex - 1).ToString();
fileName = fileName.Substring(0, fileName.LastIndexOf("."));
string[] a = fileName.Split('_');
string year = a[1].Substring(0, 4);
string month = a[1].Substring(4, 2);
switch (month)
{
case "01":
month = "January";
break;
case "02":
month = "February";
break;
case "03":
month = "March";
break;
case "04":
month = "April";
break;
case "05":
month = "May";
break;
case "06":
month = "June";
break;
case "07":
month = "July";
break;
case "08":
month = "August";
break;
case "09":
month = "September";
break;
case "10":
month = "October";
break;
case "11":
month = "November";
break;
case "12":
month = "December";
break;
}
counter++;
linkButton.ForeColor = System.Drawing.ColorTranslator.FromHtml("#b32317");
linkButton.Text = month + " " + year + " Car Hire Details";
//hyperlink.NavigateUrl = file.ToString();
linkButton.Font.Bold = true;
//hyperlink.ID = "TestLB";
linkButton.Command += new CommandEventHandler(this.lb_Command);
linkButton.CommandArgument = file.ToString();
Panel1.Controls.Add(linkButton);
Label lbl1 = new Label();
lbl1.Text = "<br /> <br />";
Panel1.Controls.Add(lbl1);
}
}
protected void lb_Command(object sender, CommandEventArgs e)
{
System.String filename = e.CommandArgument.ToString();// this is your file name
Response.ContentType = "Plain/Text";
System.String disHeader = "Attachment; Filename=\"" + filename + "\"";
Response.AppendHeader("Content-Disposition", disHeader);
System.IO.FileInfo fileToDownload = new System.IO.FileInfo(e.CommandArgument.ToString());
//filepath to download
Response.Flush();
Response.WriteFile(fileToDownload.FullName);
}
Mais le problème est que, quand j'essaie de télécharger ça :
-
Le fichier est téléchargé au format HTML, de plus le nom du fichier téléchargé devient le même que le nom du fichier de mon code alors que je veux le nom réel.
-
le fichier téléchargé contient les données réelles mais aussi le code html de la page sur laquelle se trouvent ces liens.
Quelqu'un peut-il m'aider à ce sujet ?