0

目前我已经以二进制格式存储在任何类型的 BD 文件中。我在文件上传中做的过程如下:

  1. 拖放文件和收集被发送到服务器。
  2. 在服务器中收集每个文件的流。
  3. 每个流都转换为 byte()
  4. 它almanancena BD 中的Byte() 正确

现在,是时候下载文件了,它包括在 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,尽管还有许多其他类型。

谁能知道发生了什么或者我做错了什么?

非常感谢.tiendo。附上代码以获得可能的帮助。

4

2 回答 2

0

Dim ms As Stream = New MemoryStream(lFile, 0, lFile.Length)

将长度转换为 (int)

于 2013-03-05T14:01:30.613 回答
0

问题不是类型的转换,因为 lFile.Lenght 它是 INT。问题在于它启动到 UpdatePanel 中的方法并且没有正确启动。

使其他页面中的下载正常。

于 2013-03-09T16:09:54.090 回答