2013-03-05 146 views
0

目前我已經存儲在二進制格式的任何類型的BD文件。我在文件上傳過程如下:從服務器下載文件

  1. 拖動&刪除文件和收集發送到服務器。
  2. 在服務器中收集每個文件的流。
  3. 每個流在BD轉換爲字節()
  4. 它almancena的字節()正確

現在,它的時間來下載文件,其中包括在字節從數據庫中獲取的數據( ),並直接從客戶處下載。

問題是我使用的方法不會拋出任何下載窗口,我不會犯這個錯誤。可能幫助的代碼。

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 

的想法是如下: 網格具有運行的命令列,運行該代碼塊。 其中,收集來自數據庫的字節()(其內容看起來是正確的),被髮送到流,並通過當前上下文作爲BinaryWrite發送,但從不在瀏覽器中運行任何內容。

使用的客戶端是Firefox和Chrome,但沒有任何事情發生。指示我按照我們所看到的MIME文件(在本例中爲jpeg),但也有許多其他類型。

任何人都可以知道發生了什麼,或者我可以做錯嗎?

非常感謝you.tiendo。附上可能的幫助代碼。

回答

0

存在的問題是不類型的轉換,因爲lFile.Lenght它的INT 。問題在於它啓動到UpdatePanel的方法,並且不能正確啓動。

在其他網頁下載工作正常。

0

昏暗毫秒作爲物流=新的MemoryStream(lFile,0,lFile.Length)

投射到(INT)的長度

+0

。長度是整數。 – amelian 2013-03-05 14:08:55