从服务器下载文件

时间:2013-03-05 13:57:26

标签: asp.net stream download bytearray

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

  1. 拖动&删除文件和收集将发送到服务器。
  2. 在服务器中收集每个文件的流。
  3. 每个流都转换为byte()
  4. 它正确地记录了BD正确
  5. 中的字节()

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

    任何人都可以知道发生了什么,或者我可能做错了吗?

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

2 个答案:

答案 0 :(得分:0)

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

将长度转换为(int)

答案 1 :(得分:0)

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

让其他页面的下载工作正常。