J'utilise actuellement une réponse HttpResponse pour télécharger des fichiers depuis mon serveur. J'ai déjà quelques fonctions utilisées pour télécharger des fichiers Excel/Word, mais j'ai des difficultés à télécharger mon simple fichier texte (.txt).
Avec le fichier texte, je vide le contenu d'une boîte de texte dans un fichier, j'essaie de télécharger le fichier avec la réponse HttpResponse, puis je supprime le fichier texte temporaire.
Voici un exemple de mon code qui fonctionne pour les documents Excel/Word :
protected void linkInstructions_Click(object sender, EventArgs e)
{
String FileName = "BulkAdd_Instructions.doc";
String FilePath = Server.MapPath("~/TempFiles/BulkAdd_Instructions.doc");
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "application/x-unknown";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
response.TransmitFile(FilePath);
response.Flush();
response.End();
}
Et voici le morceau de code qui ne fonctionne pas.
Prenez note que le code s'exécute sans lancer d'erreurs. Le fichier est créé, puis supprimé, mais jamais transmis à l'utilisateur.
protected void saveLog(object sender, EventArgs e)
{
string date = DateTime.Now.ToString("MM_dd_yyyy_hhmm"); // Get Date/Time
string fileName = "BulkLog_"+ date + ".txt"; // Stitch File Name + Date/Time
string logText = errorLog.Text; // Get Text from TextBox
string halfPath = "~/TempFiles/" + fileName; // Add File Name to Path
string mappedPath = Server.MapPath(halfPath); // Create Full Path
File.WriteAllText(mappedPath, logText); // Write All Text to File
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
response.TransmitFile(mappedPath); // Transmit File
response.Flush();
System.IO.File.Delete(mappedPath); // Delete Temporary Log
response.End();
}