ASP.NET向SQL Server2008匯入檔案例項操作(轉)

iSQlServer發表於2010-09-13

在Microsoft SQL Server2008以後的版本中,將刪除image資料型別。在新的開發工作中將不適用此資料型別,並打算修改當前使用此資料型別的應用程式,改

用varbinary(max)資料型別。ASP.NET向SQL Server匯入檔案主要用到FileUpload控制元件的FileBytes屬性。該屬性從FileUpload控制元件所指定的檔案返回一個位元組陣列


1.資料庫準備
為了方便大家能夠理解,這裡我們只設計兩個欄位,一個是檔案型別欄位,欄位名為FileType,另一個是存放檔案內容欄位,欄位名為FileContent。建立資料庫

,資料庫名為VarFile,語句如下: 
CREATE DATABASE VARFILE
GO
建立表,表名為FileInOut,語句如下:
USE VARFILE
GO
CREATE TABLE FILEINTOU
(
FileType   nvarchar(30) not null,
FileContent  varbinary(max) null
)
2.新增控制元件
執行VS2008並新建一個網站,在頁面Default.aspx中新增一個FileUpload控制元件,ID 為FileUpload1.同時新增三個Button按鈕,ID分別為fileUp和fileLoad。Text屬性

分別設定為“上傳檔案”和“下載檔案”。
3.新增程式碼
(1)新增名稱空間,因為和SQL Server資料庫連線,所以新增using System.Data.Sqlclient和using System.Data名稱空間。又因為要設定輸出流的HTTP的字符集

為"gb2312"字元編碼,所以新增using System.Text名稱空間。同時又因為要把匯出檔案強型別化為字串,所以新增using System.Collections.Specialized命名

空間。
(2)新增“上傳檔案”按鈕的事件程式碼。當單擊“上傳檔案”按鈕後,獲取FileUpload控制元件所選擇的檔案的檔案型別以及檔案的位元組陣列插入資料庫中。切換到設計視

圖,雙擊“上傳檔案”按鈕,新增"上傳檔案"按鈕事件程式碼,程式碼如下:
protected void fileUp_Click(object sender,EventArgs e)
{
if(FileUpload1.FileName==string.Empty)
{
Response.Write("
return;
}
string mailto:connstr=@%22Data Source=69F638102711447\SQL2008;Initial Catalog=VarFile;Integrated Security=Ture"; //資料庫連線字串
string the Selected=FileUpload1.FileName;   //獲取上傳檔案的字尾名
string extension=theSelected.Substring(theSelected.LastIndexOf(".")).ToLower();
if(CheckFileType(extension))     //如果有指定的檔案型別
{

string contentType=GetContentType(extension);
string sqlstr="insert into FileInOut values(@FileType,@FileCount)";           //上傳檔案的SQL語句
string sqlstrclear="truncate table FileInOut";                                         //清空資料庫SQL語句
SqlConnection con=new SqlConnection(connstr);                                  //例項化資料庫連線物件
SqlCommand cmd=new SqlCommand(sqlstr,con);                                //例項化上傳檔案SQL命令
SqlCommand cmdclear=new SqlCommand(sqlstrclear,con);                   //例項化清空資料庫SQL命令
//定義問價型別引數
cmd.Parameters.Add(new SqlParameter("@FileType”,SlqDbType.NvarChar,30));
cmd.Parameters["@FileType"].Value=contentType;                              //定義檔案內容引數
cmd.Parameters.Add(new SqlParameter("@FileCount",SqlDbType.NVarChar,30));   //將檔案轉化為位元組陣列作為@FileCount的值
cmd.Parameters["@FileCount"].Value=FileUpload1.FileBytes;
con.Open();
cmdclear.ExecuteNonQuery();             //執行清空資料庫命令
cmd.ExecuteNonQuery();                   //執行上傳檔案命令
}
}

(3)新增獲取檔案型別和獲得檔案匯出方式的函式方法。首先檢視所要上傳檔案型別是否在指定問價型別內,如果在,則可以直接匯入檔案,然後根據檔案型別

獲取此檔案匯出方式並存放在FileType欄位中,程式碼如下: http://www.hqqrc.com/      http://www.xuebiyou.com/     http://www.0372jiajiao.com/ (裝載請保留站長連結,謝謝)
public static bool CheckFileType(string type)
{
StringDictionary sd=new StringDictionary();    //例項化集合StringDictionary類
sd.Add(".doc","application/msword");
sd.Add(".ppt","application/vnd.ms-powerpoint");
sd.Add(".xsl","application/vnd.ms-excel");
sd.Add(".rtf","application/msword");
sd.Add(".html","text/html");
sd.Add(".htm","text/html");
sd.Add(".txt","text/plain");
sd.Add(".pdf","application/pdf");
return sd.ContainsKey(type);                                //確定StringDictionary是否包含特定鍵
}

public static string GetContentType(string extension)    //獲取輸出檔案方式
{StringDictionary sd=new StringDictionary();
sd.Add(".doc","application/msword");
sd.Add(".ppt","application/vnd.ms-powerpoint");
sd.Add(".xsl","application/vnd.ms-excel");
sd.Add(".rtf","application/msword");
sd.Add(".html","text/html");
sd.Add(".htm","text/html");
sd.Add(".txt","text/plain");
sd.Add(".pdf","application/pdf");
return sd[extension];    //返回對應鍵的值
 
}
(4)上傳檔案,選擇一個pdf檔案,單擊"上傳檔案"按鈕後,開啟資料庫中的FileInOut表,如圖所示可以看到。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-673728/,如需轉載,請註明出處,否則將追究法律責任。

相關文章