2009-04-22 30 views
0

我目前正在修補一個asp.net程序,我需要能夠發送圖像到SQL Server 2005數據庫。當我使用asp:fileupload控件時,它工作正常,但訣竅是,當用戶刪除圖像時,我應該用代碼隱藏的服務器圖像替換爲「空白」。在vb中打開圖像發送到數據庫 - Asp.Net

我知道如何在vb中打開,使用和保存文本文件,但是我找不到任何關於如何以類似方式打開圖像/二進制文件的任何信息,以便我可以將它用作sql-參數在更新查詢上。

下面是從fileupload控件中使用文件是多麼容易的示例。

 

      Dim t_id As Integer = Convert.ToInt32(Request.QueryString("id")) 

      open() 

      Dim picture As New SqlParameter("@picture", pictureFileUpload.FileBytes) 
      Dim id As New SqlParameter("@id", t_id) 

      myCommand = New SqlCommand("spChangeImage") 
      myCommand.CommandType = CommandType.StoredProcedure 
      myCommand.Connection = conn 

      myCommand.Parameters.Add(picture) 
      myCommand.Parameters.Add(id) 

      myCommand.ExecuteNonQuery() 
      close() 

現在我需要一種方法來打開一個圖像文件,並將其設置爲以類似的方式中的參數,但我沒有線索,如何去這樣做。所有的搜索結果都集中在用html打開和查看圖像,我只是需要二進制文件在查詢中使用它。我試圖使用binaryreader,但即使如此,我不知道如何真正映射文件開始。

在此先感謝您的幫助!

回答

1

就我個人而言,當用戶刪除它們的值時,我不會將此圖像存儲在數據庫中。我會將列設置爲空。當寫入圖像時,我會檢測列是否爲空,然後讀取文件並將其寫入響應。如果你這樣做,那麼你不需要在本地緩衝區中累積任何東西,你可以在讀取響應時將每個緩衝區寫入響應。您可以使用FileInfo.Length來確定響應的內容長度。

如果你堅持把圖像放在數據庫中,你也可以使用FileInfo.Length來確定你需要保存圖像的緩衝區的大小。使用你的BinaryReader將這個長度的字節讀入緩衝區。緩衝區然後成爲您的SQL命令的參數。

+0

起初我以爲我不能這樣做,因爲圖片的缺席產生了一個全新的問題。但是一位同事隨後展示了一個類似的想法,在數據庫連接之後如何替換源文件中的「NULL」文件,以便程序的其餘部分能夠按照預期工作。該程序最初並不是用來處理丟失的圖片。 ;)謝謝你。 – Zan 2009-04-23 06:16:25