File Download not finishing Sub


T

tshad

I have a function that downloads a file to the users computer and it works
fine.

The problem is that I then want the program to rename the file (file.move)
to the same name plus todays date.

The problem is that when you run the program it gets to the:

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

and this does something to the program and it will finish the response
section to write file but never does anything else.

Following is the Sub and it works fine, but never does any code after the
response section. Not the Trace and not the section that does the rename.

************************************
Sub GetFileDownload(strRequest as String)
trace.warn("in file download")
if (strRequest <> "")

' get absolute path of the file
Dim file as System.IO.FileInfo = new System.IO.FileInfo(strRequest)
' if the file exists on the server
if (file.Exists)

' set appropriate headers
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" +
file.Name)
Response.AddHeader("Content-Length", file.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(file.FullName)
Response.End()
trace.warn("inside Download strRequest = " & strRequest)
' Dim newFile as System.IO.FileInfo = new System.IO.FileInfo(strRequest &
" " & DateTime.Now.Month & "_" & DateTime.Now.Day & "_" & DateTime.Now.Year)
' if not newFile.Exists
' System.IO.File.Move(file.FullName.ToString(),file.DirectoryName & "\"
& strRequest & " " & DateTime.Now.Month & "_" & DateTime.Now.Day & "_" &
DateTime.Now.Year)
' end if
else
' if file does not exist
StatusMessage.Text = "This file does not exist."
end if
else
StatusMessage.Text = "Please provide a file to download."
end if
trace.warn("At end of Download")
end sub
*************************************************

Why does this happen? I assume it has something to the HTTP pipe.

How can I get this to rename the file after it copies it?

Thanks,

Tom
 
Ad

Advertisements

B

bruce barker \(sqlwork.com\)

a Response.End() terminates the current thread, so no code after it run.
rename before.

-- bruce (sqlwork.com)
 
T

tshad

bruce barker (sqlwork.com) said:
a Response.End() terminates the current thread, so no code after it run.
rename before.

Is there a way to get around this?

I want to copy the file to another file when this is done. I can copy it
before (but I need to do it after in case he cancels the copy). The
following routine works.

*************************************
Sub GetFileDownload(strRequest as String)
if (strRequest <> "")

' get absolute path of the file
Dim file as System.IO.FileInfo = new System.IO.FileInfo(strRequest)
' if the file exists on the server

if (file.Exists)
Dim newFileName as string
newFileName = strRequest.Replace(".txt","_" & DateTime.Now.Month & "_" &
DateTime.Now.Day & "_" & DateTime.Now.Year & ".txt")
Dim newFile as System.IO.FileInfo = new System.IO.FileInfo(strRequest &
" " & DateTime.Now.Month & "_" & DateTime.Now.Day & "_" & DateTime.Now.Year)

if not newFile.Exists
System.IO.File.Copy(file.FullName.ToString(),newFileName)
end if

' set appropriate headers
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" +
file.Name)
Response.AddHeader("Content-Length", file.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(file.FullName)
Response.End()
else
' if file does not exist
StatusMessage.Text = "This file does not exist."
end if
else
StatusMessage.Text = "Please provide a file to download."
end if
trace.warn("At end of Download")
end sub
************************************************************************

But I can't move the Copy section after the Responses (as you said).

I actually found that once you hit the first Resonse.AddHeader - the trace
won't work.

The other problem is - is there a way to know whether the user cancelled the
download? When you get the popup to allow the user to save the file - he
can also cancel it.

Thanks,

Tom
 
Ad

Advertisements

T

tshad

The other thing I would like to be able to do is tell whether the user
presses the Cancel button or not. Since it doesn't come back - how do you
do that. Or can you?

Thanks,

Tom
 

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

Top