Download file works locally, but not on server - Any idea?

C

Carlos Lozano

Hello,
I have the following section of code in a popup window that is opened from
other page when clicking a button:
The downloadFile method is called from the Page_Load Event.

private void downloadFile(string filename)
{
Response.ClearHeaders();
Response.ClearContent();

// set the http content type to "APPLICATION/OCTET-STREAM
Response.ContentType = "APPLICATION/OCTET-STREAM";

// initialize the http content-disposition header to
// indicate a file attachment with the default filename
// "myFile.txt"
//String disHeader = "Attachment; Filename=\"" + filename +
"\"";
string disHeader = "Attachment; Filename=" + filename;
Response.AppendHeader("Content-Disposition", disHeader);

// transfer the file byte-by-byte to the response object
System.IO.FileInfo fileToDownload = new
System.IO.FileInfo(Server.MapPath("Downloads") + "\\" + filename);

Response.Flush();
Response.WriteFile(fileToDownload.FullName);
Response.End();
}

This code works okay when running locally (http://localhost/site). If I try
to run it on a server in the internet (http://server/site) it does not show
the file download dialog.
The popup window is shown very fast, then it is closed right away.

Any ideas? Is it a security issue?

Thank you,

Carlos
 
G

Guest

Hello,
I have the following section of code in a popup window that is opened from
other page when clicking a button:
The downloadFile method is called from the Page_Load Event.

private void downloadFile(string filename)
{
Response.ClearHeaders();
Response.ClearContent();

// set the http content type to "APPLICATION/OCTET-STREAM
Response.ContentType = "APPLICATION/OCTET-STREAM";

// initialize the http content-disposition header to
// indicate a file attachment with the default filename
// "myFile.txt"
//String disHeader = "Attachment; Filename=\"" + filename +
"\"";
string disHeader = "Attachment; Filename=" + filename;
Response.AppendHeader("Content-Disposition", disHeader);

// transfer the file byte-by-byte to the response object
System.IO.FileInfo fileToDownload = new
System.IO.FileInfo(Server.MapPath("Downloads") + "\\" + filename);

Response.Flush();
Response.WriteFile(fileToDownload.FullName);
Response.End();

}

This code works okay when running locally (http://localhost/site). If I try
to run it on a server in the internet (http://server/site) it does not show
the file download dialog.
The popup window is shown very fast, then it is closed right away.

Any ideas? Is it a security issue?

Thank you,

Carlos

Try to add a try..catch block to see the error (if any)

try {
....your code
} catch (Exception e)
// file IO errors
{
Response.Write (e.getMessage());
}

also try to check the path you get in fileToDownload.FullName
 
C

Carlos Lozano

That is exactly why I am puzzled.
The file path is okay and no exception happens. It just does not do what it
should do when installed on the server. In addition the download page is
closed automatically, I have not code for closing it. So it is weird.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,708
Latest member
SherleneF1

Latest Threads

Top