Downloading a file to client

  • Thread starter Thread starter Ian Gordon
  • Start date Start date
I

Ian Gordon

Hi,

I have 2 problems when downloading a file from my ASP.net app to the client
PC. At the moment I'm doing it with the following code:

Response.ContentType = "application/octet-stream"

Response.AddHeader("Content-Disposition", "attachment; filename=" +
strFileToDownload)

Response.WriteFile(strFileToDownload)



The problems are:
1. How can I set the name of document to be downloaded? At the moment, the
name of file is by default set to be the name of the web form that it comes
from, which is far from ideal. to be able to call it, for example,
myFile.doc.
2. How can I try and force the save to be in a specific directory, or even
to default to the Windows temp directory, or to My Documents? At the moment,
the default target directory seems quite different on different machines.

All help very much appreciated.

Ian
(e-mail address removed)
 
Also you might want to look at putting a marker such as " or ' around the
file name. If there are spaces in the filename, I don't know exactly that
would do, but I am sure it isn't going to be desired behavior.

Also it might be a setting on the broswer you are using. I had a web app
for the division I am in that worked fine, except when the site was used
outside the development group. The firm standard did not allow the filename
to be passed to the download dialog.

bill
 
Hi Ian,

The fix is in this line:
Response.AddHeader("Content-Disposition", "attachment; filename=" +
System.IO.Path.GetFileName(strFileToDownload))

The Content-Disposition header requires only the file name, not the entire
path. When given the entire path, it negates and the browser will not set a
name for the file download dialog.

Also, you should call Response.Clear() before you add your headers just to
make sure that there are no other headers being sent down to the browser.


As for the second part of your question, no. This is a serious breach of
security.

HTH,

Bill P.
 
Back
Top