What i want to do is that the user selects some fields on a grid and according to these datas i create an xml file on the web server and then i want user to download it like downloading a any file. But the problem is, i cant use this code:
Response.ContentType = "APPLICATION/OCTET-STREAM";
// initialize the http content-disposition header to
// indicate a file attachment with the default filename
// "myFile.txt"
System.String disHeader = "Attachment; Filename=\"" + fileName +
"\"";
Response.AppendHeader("Content-Disposition", disHeader);
FileInfo downloadFile = new FileInfo(fileFullName);
if (downloadFile.Exists)
{
Response.WriteFile(downloadFile.FullName);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
Because i need to let the user download 3 files so the header cannot cary it, what i tought was getting the file names and open a popup, list the file names with a linkbutton, and then the user can download it.
For each file i create a linkbutton at runtime and add this code :
lnkProblem.Text = "Problemler dosyası";
lnkProblem.Visible = true;
lnkProblem.Command += new CommandEventHandler(lnkUser_Command);
lnkProblem.CommandName = Request.QueryString["fileNameProblems"];
lnkProblem.CommandArgument = Request.QueryString["fileNameProblems"];
Then use this function to make it download by the user :
void lnkUser_Command(object sender, CommandEventArgs e)
{
Response.ContentType = "APPLICATION/XML";
System.String disHeader = "Attachment; Filename=\"" + e.CommandArgument.ToString() +
"\"";
Response.AppendHeader("Content-Disposition", disHeader);
FileInfo downloadFile = new FileInfo(Server.MapPath(".") + "\\xmls\\" + e.CommandArgument.ToString());
if (downloadFile.Exists)
{
Response.WriteFile(Server.MapPath(".") + "\\xmls\\" + e.CommandArgument.ToString());
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
Application creates the xml file but somewhere of it, app puts the html tags in that xml file so i can't open the file, is there anyway to do this? Maybe any other example...