C#從SqlServer數據庫讀寫文件代碼

pb44 9年前發布 | 4K 次閱讀 C#

C#從SqlServer數據庫讀寫文件代碼,可以將文件存儲在數據庫內,然后通過代碼對文件進行讀寫

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; <script runat="server"> private string connectionString = "Data Source=192.168.3.1;Initial Catalog=TestData;User Id=sa;Password=lambada;"; protected void Button1_Click(object sender, EventArgs e) { //得到文件數組 byte[] fileData = FileUpload1.FileBytes; //得到文件名字 string fileName = System.IO.Path.GetFileName(FileUpload1.FileName); //得到文件類型 string fileType = FileUpload1.PostedFile.ContentType;

//構建數據庫連接,SQL語句,創建參數

System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(connectionString); String strSql = "INSERT INTO FileTable (ContentType,Content,Title)" + "VALUES (@ContentType,@Content,@Title)"; System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(strSql, myConnection); command.Parameters.AddWithValue("@ContentType", fileType); command.Parameters.AddWithValue("@Content", fileData); command.Parameters.AddWithValue("@Title", fileName); //打開連接,執行查詢 myConnection.Open(); command.ExecuteNonQuery(); myConnection.Close(); myConnection.Dispose(); Response.Redirect(Request.FilePath); }

protected void Page_Load(object sender, EventArgs e) { /* CREATE TABLE [FileTable] ( [FileId] [int] IDENTITY (1, 1) NOT NULL , [Title] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NOT NULL , [ContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL , [Content] [image] NULL , CONSTRAINT [PK_FileTable] PRIMARY KEY CLUSTERED ( [FileId] ) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

*/

//構建數據庫連接,SQL語句,創建參數 System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(connectionString); String strSql = "select * from FileTable"; System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand(strSql, myConnection); //打開連接,執行查詢 myConnection.Open(); System.Data.SqlClient.SqlDataReader dr = command.ExecuteReader(); GridView1.DataSource = dr; GridView1.DataBind(); myConnection.Close(); myConnection.Dispose(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"&gt; <head id="Head1" runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上傳文件" /> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> <Columns> <asp:HyperLinkField DataNavigateUrlFields="FileId" HeaderText="文件名" DataTextField="Title" DataNavigateUrlFormatString="~/Download.ashx?FileId={0}" /> </Columns> </asp:GridView> </form> </body> </html></pre>
//Download.ashx

<%@ WebHandler Language="C#" Class="Download" %>
using System;
using System.Web;
using System.Data.SqlClient;
public class Download : IHttpHandler
{
  private string connectionString = "Data Source=192.168.3.1;Initial Catalog=TestData;User Id=sa;Password=lambada;";
  public void ProcessRequest(HttpContext context)
  {
    String fileId = context.Request.QueryString["FileId"];
    if (String.IsNullOrEmpty(fileId))
    {
      context.Response.ContentType = "text/html";
      context.Response.Write("無效的ID。");
      return;
    }
    int id = 0;
    if (!Int32.TryParse(fileId, out id))
    {
      context.Response.ContentType = "text/html";
      context.Response.Write("ID 不是數字。");
      return;
    }

SqlConnection myConnection = new SqlConnection(connectionString);
String strSql = "select * from FileTable Where FileId=@FileId";
SqlCommand command = new SqlCommand(strSql, myConnection);
command.Parameters.AddWithValue("@FileId", fileId);
//打開連接,執行查詢
myConnection.Open();
SqlDataReader dr = command.ExecuteReader();
if (dr.Read())
{
  String fileName = dr["Title"].ToString();
  if (context.Request.UserAgent.IndexOf("MSIE") > -1)
  {
    fileName = HttpUtility.UrlEncode(fileName);
  }
  context.Response.ClearContent();
  context.Response.ContentType = dr["ContentType"].ToString();
  context.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
  context.Response.BinaryWrite((Byte[])dr["Content"]);
}
else
{
  context.Response.ContentType = "text/html";
  context.Response.Write("沒找到文件。");
}
myConnection.Close();
myConnection.Dispose();

}

public bool IsReusable { get { return false; } }

}</pre>

 本文由用戶 pb44 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!