如何保存PDF、Word和Excel文件到数据库中
在项目中,有时候我们很需要把PDF、Word和Excel文档等等上传到数据库,以便日后使用。今天这篇文章向大家讲解如何将这些文件保存到数据库的。
详细步骤
第一步:打开数据库,单击新建查询,创建一个名称为Documents的表:
代码如下:
create table Documents
(
SNo int identity,
Name_File varchar(),
DisplayName varchar(),
Extension varchar(),
ContentType varchar(),
FileData varbinary(max),
FileSize bigint,
UploadDate datetime
)
这个表包含了这些数据:
SNo序列号
Name_File文件名
DisplayName 文件显示的名称
Extension文件的扩展名
ContentType文件种类
FileData文件二进制格式
FileSize文件大小
UploadDate文件导入时间

第二步:打开Visual Studio,新建一个空网站,命名为“FilesToBinary”

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

在这个页面我们需要添加TextBox ,FileUpload ,Button这三个控件。
设计界面如图:

当然你也可以在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, , file.ContentLength); //验证保存的文件扩展名是否为pdf,doc,docx,xls.
if ((extension == ".pdf") || (extension == ".doc") || (extension == ".docx") || (extension == ".xls"))
{
//验证文件的大小
if (file.ContentLength <= )
{
//表里插入数据
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;
}
}
}
运行结果如图:

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

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

返回数据库,这时PDF、Word 和Excel文件已经成功添加到数据库啦。

希望对你有帮助,谢谢浏览!
如何保存PDF、Word和Excel文件到数据库中的更多相关文章
- C#导出Word或Excel文件总显示Html标记
原因:Word或Excel文件包含的GridView没有查询到数据.
- 利用kettle组件导入excel文件到数据库
利用kettle组件导入excel文件到数据库 1. 实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...
- 使用log4j将日志输送到控制台、文件或数据库中
转: 使用log4j将日志输送到控制台.文件或数据库中 2018-09-07 00:45:08 keep@ 阅读数 2880更多 分类专栏: 其它 版权声明:本文为博主原创文章,遵循CC 4.0 ...
- C#.NET实现Word或Excel文件转为HTML文件
Word文件转html,返回相对路径 private string GetPathByDocToHTML(string strFile) { if (string.IsNullOrEmpty(strF ...
- .Net core 使用NPOI 直接导入Excel到数据库(即不先将Excel保存到服务器再读取文件到数据库)
/// <summary> /// 导入信息 /// </summary> /// <param name="file"></param& ...
- React中使用react-file-viewer,实现预览office文件(pdf,word,xlsx等文件)前端实现
最近做一个项目要求在前端浏览器可以直接打开office文件(pdf,doc,xlsx等文件).pdf浏览器可以直接打开(可以直接用a标签href="文件地址"或者iframe标签s ...
- 导出Excel文件(项目中会遇到很多将一些数据导出Excel或者et)
最近在项目中,遇到一些需求,就是将数据导出来,以Excel文件为主:就自己简单的做一些demo:供初学者来学习: // 定义一个保存文件的路径位置 SaveFileDialog dlgPath = n ...
- Java 导入Excel文件到数据库
原文:http://www.jb51.net/article/44021.htm 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两 ...
- Apache POI 一键上传(导入excel文件到数据库)
import cn.XXXX.bos.utils.PinYin4jUtils; import org.apache.commons.lang3.StringUtils; // HSSF:操作07版本之 ...
随机推荐
- 生产环境使用Nginx+uwsgi部署Django
在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...
- 【 D3.js 进阶系列 — 5.0 】 直方图
直方图用于描写叙述概率分布,D3 提供了直方图的布局 Histogram 用于转换数据. 假设有数组 a = [10, 11, 11.5, 12.5, 13, 15, 19, 20 ],如今把10~2 ...
- style、currentStyle、getComputeStylel的使用
(1)js中使用obj.style的用法,是为了获得内联样式,即style属性中的值. 如果想获取obj.style.display,但内联样式表中没有定义display,那么将返回一个空的字符串. ...
- 开源文档管理系统LogicalDOC测试报告---安装篇
开源文档管理系统LogicalDOC测试报告---安装篇 分类: Linux2011-06-22 15:40 7436人阅读 评论(3) 收藏 举报 文档管理测试mysql数据库installerja ...
- Linux内核策略介绍
Linux内核策略介绍学习笔记 主要内容 硬件 策略 CPU 进程调度.系统调用.中断 内存 内存管理 外存 文件IO 网络 协议栈 其他 时间管理 进程调度 内核的运行时间 系统启动.中断发 ...
- proxool的配置
//依赖的包:commons-logging-api-1.1.jar,commons-logging-1.0.4.jar,proxool-0.9.1.jar,proxool-cglib.jar,cgl ...
- IOS UI 第三篇:基本UI
工厂模式: .h文件: #import <Foundation/Foundation.h>typedef enum{ QFRed, QFYellow, QFBlu ...
- Vijos: P1046观光旅游
背景 湖南师大附中成为百年名校之后,每年要接待大批的游客前来参观.学校认为大力发展旅游业,可以带来一笔可观的收入. 描述 学校里面有N个景点.两个景点之间可能直接有道路相连,用Dist[I,J]表示它 ...
- Linq无聊练习系列7----Insert,delete,update,attach操作练习
/*********************Insert,delete,update,attach操作练习**********************************/ ...
- 一个简单的Garbage Collector的实现
一个简单的Garbage Collector的实现 前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来.为 ...