欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET保存PDF、Word和Excel文件到数据库

程序员文章站 2022-06-20 13:36:05
在项目中,有时候我们很需要把pdf、word和excel文档等等上传到数据库,以便日后使用。今天这篇文章向大家讲解如何将这些文件保存到数据库的。 详细步骤 第一步:打开...

在项目中,有时候我们很需要把pdf、word和excel文档等等上传到数据库,以便日后使用。今天这篇文章向大家讲解如何将这些文件保存到数据库的。

详细步骤

第一步:打开数据库,单击新建查询,创建一个名称为documents的表:

代码如下:

create table documents 
( 
sno int identity, 
name_file varchar(100), 
displayname varchar(50), 
extension varchar(10), 
contenttype varchar(200), 
filedata varbinary(max), 
filesize bigint, 
uploaddate datetime 
)

这个表包含了这些数据:

sno序列号

name_file文件名

displayname 文件显示的名称

extension文件的扩展名

contenttype文件种类

filedata文件二进制格式

filesize文件大小

uploaddate文件导入时间

ASP.NET保存PDF、Word和Excel文件到数据库

第二步:打开visual studio,新建一个空网站,命名为“filestobinary”

ASP.NET保存PDF、Word和Excel文件到数据库

第三步:再添加一个新页面,命名为“conversion.aspx”

ASP.NET保存PDF、Word和Excel文件到数据库

在这个页面我们需要添加textbox ,fileupload ,button这三个控件。

设计界面如图:

ASP.NET保存PDF、Word和Excel文件到数据库

当然你也可以在conversion.apsx文件直接输入下列代码:

显示文件
 <asp:textbox id="txtfilename" runat="server"> 
 </asp:textbox> 
<br /> 
 
选择文件 
<asp:fileupload id="fileupload1" runat="server" /> 
<br /> 
 
<asp:button id="button1" runat="server" 
text="导入" onclick="button1_click" /> 

第四步:控件添加后,双击button,在conversion.apxs.cs文件添加以下命名空间。

using system;
using system.web;
using system.data.sqlclient;
using system.data;
using system.io;

然后在button1_click编写代码,将文件转换为二进制流,点击button后文件便可存到数据库中。

代码如下:

protected void button1_click(object sender, eventargs e)
 {
   if (!fileupload1.hasfile) 
  { 
   response.write("未选择文件"); return; 
  } 
  else 
  {   
   string filename = path.getfilename(fileupload1.postedfile.filename); 
   string extension = path.getextension(filename); 
   string contenttype = fileupload1.postedfile.contenttype; 
   httppostedfile file = fileupload1.postedfile; 
   byte[] document = new byte[file.contentlength]; 
   file.inputstream.read(document, 0, file.contentlength); 
 
   //验证保存的文件扩展名是否为pdf,doc,docx,xls.
   if ((extension == ".pdf") || (extension == ".doc") || (extension == ".docx") || (extension == ".xls"))
   { 
 //验证文件的大小
    if (file.contentlength <= 31457280)
    { 
     //表里插入数据
     using (sqlconnection conn = new sqlconnection("data source=afod3-609221015;initial catalog=personal;integrated security=true")) 
     {
      conn.open(); 
      string sql = @"insert into documents(name_file,displayname,extension,contenttype,filedata,filesize,uploaddate) values(@name_file,@displayname,@extension,@contenttype,@filedata,@filesize,getdate())";
      sqlcommand cmd = new sqlcommand(sql, conn); 
      
      cmd.parameters.add("@name_file", sqldbtype.varchar); 
      cmd.parameters["@name_file"].value = filename; 
      cmd.parameters.add("@displayname", sqldbtype.varchar); 
      cmd.parameters["@displayname"].value = txtfilename.text.trim(); 
      cmd.parameters.add("@extension", sqldbtype.varchar); 
      cmd.parameters["@extension"].value = extension; 
 
      cmd.parameters.add("@contenttype", sqldbtype.varchar); 
      cmd.parameters["@contenttype"].value = contenttype; 
 
      cmd.parameters.add("@filedata", sqldbtype.varbinary); 
      cmd.parameters["@filedata"].value = document; 
 
      cmd.parameters.add("@filesize", sqldbtype.bigint); 
      cmd.parameters["@filesize"].value = document.length; 
      cmd.executenonquery(); 
      cmd.dispose(); 
      conn.close(); 
      response.write("数据已添加"); 
     } 
 
    } 
    else 
    { response.write("文件大小无效"); return; } 
   } 
   else 
   {
    response.write("无效文件"); return; 
   } 
  } 
}

运行结果如图:

ASP.NET保存PDF、Word和Excel文件到数据库

这时浏览文件夹,就可以添加我们的文件了。点击导入,成功添加。

ASP.NET保存PDF、Word和Excel文件到数据库

如果选择了不符合规则的文件后,则会显示:

ASP.NET保存PDF、Word和Excel文件到数据库

返回数据库,这时pdf、word 和excel文件已经成功添加到数据库啦。

ASP.NET保存PDF、Word和Excel文件到数据库

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。