目前,我已经以二进制格式存储在任何类型的BD文件中。我在文件上传过程中的过程如下:
现在,是时候下载文件了,包括从Byte()中获取数据库中的数据,并直接从客户下载。
问题是我使用的方法没有抛出任何下载窗口,我没有犯这个错误。副代码可能提供帮助。
Protected Sub grdDocumentoByExp_RowCommand(sender As Object, e As GridViewCommandEventArgs)
If e.CommandName = "cmdDownload" Then
Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
Dim lFileName As String = e.CommandName
Dim lFile() As Byte = GetImageArrayBy_docID(e.CommandArgument)
Dim ms As Stream = New MemoryStream(lFile, 0, lFile.Length)
ms.Position = 0
ms.Close()
With context
.Response.Clear()
.Response.ClearHeaders()
.Response.ClearContent()
.Response.ContentType = "image/jpeg"
.Response.AddHeader("content-disposition", "attachment;filename=" & "Fichero1.jpg")
.Response.AddHeader("content-length", lFile.Length)
.Response.BinaryWrite(lFile)
.Response.End()
End With
End If
End Sub
这个想法如下: 网格有一列运行命令,运行此代码块。 在其中,从数据库中收集byte()(内容中看起来是正确的),传输到Stream 并通过当前上下文作为 BinaryWrite 发送,但是永远不要在浏览器中运行任何东西。
使用的客户端是Firefox和Chrome,但没有任何事情发生。表示我正如我们所见, MIME 文件,在这种情况下是jpeg,但还有许多其他类型。
任何人都可以知道发生了什么,或者我可能做错了吗?
非常感谢。附上代码以获得可能的帮助。
答案 0 :(得分:0)
Dim ms As Stream = New MemoryStream(lFile,0,lFile.Length)
将长度转换为(int)
答案 1 :(得分:0)
问题不在于类型的转换,因为lFile.Lenght它是INT。问题是它在UpdatePanel中启动的方法并没有正确启动。
让其他页面的下载工作正常。