It’s a common scenario: user needs to download a file from the server by clicking link or a button in your ASPX page. The server-side code for this is pretty straightforward and looks something like this:
Sub DownloadFile(ByVal i_sServerPath As String, ByVal i_sDisplayName As String)
Dim oFile As FileInfo = New FileInfo(i_sServerPath)
With Response
.Clear()
.ClearHeaders()
.AddHeader("Content-Length", oFile.Length.ToString())
.ContentType = ReturnContentType(oFile.Extension.ToLower())
.AddHeader("Content-Disposition", "attachment; filename=" & i_sDisplayName)
.TransmitFile(oFile.FullName)
.End()
End With
End Sub
The code accepts 2 parameters: i_sServerPath – full path to the file on the server and i_sDisplayName – file name that will be displayed to the user in the “Save As” dialog. Code also populates response headers based on file information. I use this handy function to populate ContentType based on file extention:
Function ReturnContentType(ByVal i_sfileExtension As String) As String
Select Case i_sfileExtension
Case ".htm", ".html", ".log" : Return "text/HTML"
Case ".txt" : Return "text/plain"
Case ".doc" : Return "application/ms-word"
Case ".tiff", ".tif" : Return "image/tiff"
Case ".asf" : Return "video/x-ms-asf"
Case ".avi" : Return "video/avi"
Case ".zip" : Return "application/zip"
Case ".xls", ".csv" : Return "application/vnd.ms-excel"
Case ".gif" : Return "image/gif"
Case ".jpg", "jpeg" : Return "image/jpeg"
Case ".bmp" : Return "image/bmp"
Case ".wav" : Return "audio/wav"
Case ".mp3" : Return "audio/mpeg3"
Case ".mpg", "mpeg" : Return "video/mpeg"
Case ".rtf" : Return "application/rtf"
Case ".asp" : Return "text/asp"
Case ".pdf" : Return "application/pdf"
Case ".fdf" : Return "application/vnd.fdf"
Case ".ppt" : Return "application/mspowerpoint"
Case ".dwg" : Return "image/vnd.dwg"
Case ".msg" : Return "application/msoutlook"
Case ".xml", ".sdxl" : Return "application/xml"
Case ".xdp" : Return "application/vnd.adobe.xdp+xml"
Case Else : Return "application/octet-stream"
End Select
End Function
It’s all good, but what if you need to delete the file from the server immediately after user downloaded it? Continue reading →


First, I 


