Home  >  Article  >  Database  >  ASP.NET下向SQLServer2008导入文件实例操作方法

ASP.NET下向SQLServer2008导入文件实例操作方法

WBOY
WBOYOriginal
2016-06-07 18:01:27865browse

在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("<script>altert(‘请选择要上传的文件')</script>");
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字段中,代码如下:
代码如下:
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表,如图所示可以看到。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn