Solicitar que o usuário salve / abra o arquivo no ASP.NET C #
Não deve ser tão difícil descobrir como fazer isso. Basicamente estou tentando pegar uma string e deixar o cliente salvá-la quando clicam em um botão. Ele deve aparecer com uma caixa de diálogo Salvar / Abrir. Sem sinos extras e assobios ou qualquer coisa. Não é ciência de foguetes (ou assim eu teria pensado).
Parece haver várias formas diferentes (StreamWriter, HttpResponse, etc.), mas nenhum dos exemplos que consegui encontrar funciona corretamente ou explica o que está acontecendo. Desde já, obrigado.
Um exemplo de um dos muitos blocos de código que encontrei ...
(Este é apenas um exemplo, sinta-se à vontade para não basear sua resposta nisso.)
String FileName = "FileName.txt";
String FilePath = "C:/...."; //Replace this
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(FilePath);
response.Flush();
response.End();
A linha 2 diz para substituir essa string. Como? Este código foi anunciado como criar uma caixa de diálogo. Eu não deveria ter que definir um caminho no código, certo?
EDIT: resultado final (editado novamente, a exclusão tem que vir antes End ();)
string FilePath = Server.MapPath("~/Temp/");
string FileName = "test.txt";
// Creates the file on server
File.WriteAllText(FilePath + FileName, "hello");
// Prompts user to save 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(FilePath + FileName);
response.Flush();
// Deletes the file on server
File.Delete(FilePath + FileName);
response.End();