如何在ASP.NET中上傳檔案到資料庫

gudesheng發表於2008-01-03



  上回談到了如何下載檔案,包含資料庫中的檔案,動態產生的檔案...等。
這次我們來看看怎麼把檔案上傳到資料庫中,這邊需要注意一個小地方,在上傳檔案到資料庫的部分,資料欄位的性態若是Access請選擇Ole物件,若是SQL Server請選擇Image格式。

接著您可以通過下面的程式碼進行檔案的上傳:

If Me.FileUpload1.PostedFile.ContentLength > 0 Then
  Dim cn As New Data.OleDb.OleDbConnection
  Dim dc As Data.OleDb.OleDbCommand
  Dim para As Data.OleDb.OleDbParameter
  Dim SQL, FileName As String
  '連線字串
  cn.ConnectionString = Me.AccessDataSource1.ConnectionString
  cn.Open()
  '執行 TextBox 中的 SQL 指令
  FileName = Me.FileUpload1.PostedFile.FileName
  SQL = "insert into FileStorage (FileName,FileBody) values ('" & FileName & "',?)"
  '建立 SqlCommand 物件
  dc = New Data.OleDb.OleDbCommand(sql, cn)
  para = New Data.OleDb.OleDbParameter("file", Data.OleDb.OleDbType.Binary)
  para.Value = Me.FileUpload1.FileBytes
  dc.Parameters.Add(para)
  '執行(通過 Parameters 將檔案儲存到資料庫)
  dc.ExecuteNonQuery()
  ShowAlertMsg("上傳檔案儲存完畢!")
Else
  ShowAlertMsg("上傳檔案不存在!")
End If

  上傳至資料庫中的檔案,可以通過下面的方式重新下載回來,請特別這注意這張網頁在呼叫的時候必須提供檔案編號做為URL中的命令列引數:

  Me.AccessDataSource1.SelectCommand = "select * from FileStorage where uid=" & Request.QueryString("FileID")
  Dim dv As Data.DataView = Me.AccessDataSource1.Select(New DataSourceSelectArguments)
  '準備下載檔案
  Response.ClearHeaders()
  Response.Clear()
  Response.Expires = 0
  Response.Buffer = True
  Dim fileName As String = dv.Item(0).Item("FileName")
  '通過 Header 設定檔名
  Response.AddHeader("content-disposition", "attachment; filename=" & Chr(34) & System.Web.HttpUtility.UrlEncode(IO.Path.GetFileName(fileName), System.Text.Encoding.UTF8) & Chr(34))
  Response.ContentType = "Application/octet-stream"
  '傳出要讓使用者下載的內容
  Response.BinaryWrite(dv.Item(0).Item("FileBody"))
  '釋放資源
  Response.End()

整個範例請參考:
http://video.studyhost.com/Download/Example/ASP.NET/FileUploadAndDownloadWithDB.rar 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1869097


相關文章