首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 將檔案上傳至資料庫完整實作指南

     編輯:關於ASP.NET

將使用者上傳的檔案直接儲存於資料庫(而非檔案系統)是常見需求。本文說明資料表結構、預存程序與上傳程式碼的完整實作步驟。

資料表結構

建立 tblBooksUpload 表:

CREATE TABLE tblBooksUpload
(
    DocID int NOT NULL IDENTITY PRIMARY KEY,
    DocTitle varchar(200),
    Doc image,
    DocType varchar(50),
    Entrydate datetime DEFAULT GETDATE()
)

欄位說明:

  • DocID:主鍵,自動遞增編號。
  • DocTitle:檔案標題或簡述。
  • Doc:image 型別,儲存二進位檔案內容。
  • DocType:MIME 類型(如 application/pdf、image/jpeg),供瀏覽器正確呈現。
  • Entrydate:上傳時間,預設為伺服器當前時間。

插入資料的預存程序

CREATE PROCEDURE uSP_BooksUploadFile
    @Title varchar(200),
    @Doc image,
    @DocType varchar(50)
AS
    INSERT INTO tblBooksUpload (DocTitle, Doc, DocType)
    VALUES (@Title, @Doc, @DocType)
GO

上傳實作步驟

  1. 客戶端取得檔案:使用 <input type="file" /> 讓使用者選擇檔案。
  2. 伺服器讀取檔案流:在 FileUpload 控制項的 PostedFile.InputStream 讀取位元組陣列。
  3. 呼叫預存程序寫入資料庫:使用 SqlCommand 設定參數型別為 SqlDbType.Image 執行插入。

關鍵程式碼片段 (C#)

protected void btnUpload_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        byte[] fileData = FileUpload1.FileBytes;
        string fileName = FileUpload1.FileName;
        string mimeType = FileUpload1.PostedFile.ContentType;

        using (SqlConnection conn = new SqlConnection(connStr))
        using (SqlCommand cmd = new SqlCommand("uSP_BooksUploadFile", conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Title", fileName);
            cmd.Parameters.Add("@Doc", SqlDbType.Image).Value = fileData;
            cmd.Parameters.AddWithValue("@DocType", mimeType);
            conn.Open();
            cmd.ExecuteNonQuery();
        }
        lblMsg.Text = "上傳成功!";
    }
}

注意事項

  • 資料庫 image 型別在 SQL Server 2005+ 建議改用 varbinary(max)。
  • 大型檔案建議啟用串流上傳或分塊寫入,避免記憶體壓力。
  • 下載時依 DocType 設定 Response.ContentType,再用 Response.BinaryWrite 輸出。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved