Хорошо, есть пара вещей, которые вы, возможно, пытаетесь сделать, не совсем понятно, но я попробую. Допустим, у вас есть следующая базовая база данных, состоящая из идентификатора файла и информации о двоичном файле:
CREATE TABLE Test
(
FileId int identity(1,1) PRIMARY KEY,
FileData varBinary(max)
)
Вам нужна страница (в данном случае называемая «GetFile.aspx») со следующим значением в событии Page_Load кода:
'Make sure we've got a querystring
If String.IsNullOrEmpty(Request.QueryString("fileid")) Then
Throw New ApplicationException("Missing querystring parameter FileId")
End If
Dim FileId As Integer
'Make sure the querystring is an Int
If Not Integer.TryParse(Request.QueryString("fileid"), FileId) Then
Throw New ApplicationException("Malformed querystring parameter FileId")
End If
'Change YourDsnHere to point to your database
Using Con As New SqlConnection("YourDsnHere")
Con.Open()
'Select the file
Using Com As New SqlCommand("SELECT * FROM Test WHERE FileId=@FileId", Con)
Com.CommandType = Data.CommandType.Text
Com.Parameters.AddWithValue("@FileId", FileId)
Using RDR = Com.ExecuteReader()
If RDR.Read Then
'Get the data out as a byte array
Dim Bytes() = DirectCast(RDR.Item("FileData"), Byte())
'Clear all response headers
Response.Clear()
'Set the type, my sample is a RAR file, you'll need to look up MIME types for yours
Response.AddHeader("Content-Type", "application/x-rar-compressed")
'Set the name of the file, if you don't set it browsers will use the name of this page which you don't want
Response.AddHeader("Content-Disposition", "inline; filename=YourFilenameHere.rar")
'Optional but nice, set the length so users get a progress bar
Response.AddHeader("Content-Length", Bytes.Count.ToString())
'Push the bytes out raw
Response.BinaryWrite(Bytes)
'Close the response stream so no more HTML gets accidentally pushed out
Response.End()
Else
'Error, no file was found
End If
End Using
End Using
Con.Close()
End Using
Затем на вашей странице, когда человек нажимает кнопку, направьте его на эту страницу, убедившись, что в строке запроса указан правильный fileid
.
Как я уже сказал, я думаю, это то, что вы ищете, если нет, уточните ваше описание выше