本文修改来源:http://www.cnblogs.com/zmgdpg/archive/2005/03/31/129758.html

效果:

数据库:

思路:

首先保存word到数据库:获取上传文件字节的大小,然后从流中读取字节,其次把获得的流保存到数据库。

读取数据库:根据名称查找出来数据库中的流数据,然后用读取器BinaryWriter读取流文件保存到指定的目录下面。

代码:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data.SqlClient;
using System.Configuration; namespace WordToDB
{
public partial class WrodToDB : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } protected void btn_Click(object sender, EventArgs e)
{
/***************保存word到数据库**********/
string name = tb1.Text;
//接收上传文件
Stream fileStream = FileUpload1.PostedFile.InputStream;
//获取上传文件字节的大小
int length = FileUpload1.PostedFile.ContentLength;
byte[] wordData = new byte[length];
//从流中读取字节并写入wordData
fileStream.Read(wordData, , length);
//获取当前时间
DateTime time = DateTime.Now;
//连接数据库
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["SQLStr"].ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO word (fileName,postTime,fileContent) values (@fileName,@postTime,@fileContent)";
SqlParameter nameParam = new SqlParameter("@fileName", System.Data.SqlDbType.VarChar, );
nameParam.Value = name;
cmd.Parameters.Add(nameParam);
SqlParameter timeParam = new SqlParameter("@postTime", System.Data.SqlDbType.DateTime, );
timeParam.Value = time;
cmd.Parameters.Add(timeParam);
//添加word文件
SqlParameter contentParam = new SqlParameter("@fileContent", System.Data.SqlDbType.Image);
contentParam.Value = wordData;
cmd.Parameters.Add(contentParam);
conn.Open();
int i = cmd.ExecuteNonQuery();
if (i > )
{
Response.Write("<script>alert('上传成功')</script>");
}
else
{
Response.Write("<script>alert('上传失败')</script>");
}
conn.Close();
} protected void btn1_Click(object sender, EventArgs e)
{
/****************读取数据库中的流文件**********************/
//连接数据库
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["SQLStr"].ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
//根据TextBox中指定的文件名进行查找读取
cmd.CommandText = "select fileContent from word where fileName='" + tb1.Text.ToString() + "'";
FileStream fs;
BinaryWriter bw;
//设定允许读取到缓冲区的最大长度
int buffersize = ;
//要将字节流读入的缓冲区
byte[] outbyte = new byte[buffersize];
//用于记录已经读取的字节数
long reval;
//字段中的索引,从这里开始读取操作
long startIndex;
//FileStream对象将封装的文件的相对路径或绝对路径
string filePath = @"C:\" + tb1.Text + ".doc";
conn.Open();
SqlDataReader reader;
reader = cmd.ExecuteReader();
while (reader.Read())
{
fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
bw = new BinaryWriter(fs);
startIndex = ;
//将字节流读入outbyte缓冲区中并返回读取的字节数
reval = reader.GetBytes(, startIndex, outbyte, , buffersize);
//当读取的字节流达到缓冲区允许的最大长度时要卸载缓冲区内的数据并将数据写入文件
while (reval == buffersize)
{
bw.Write(outbyte);
bw.Flush();
//重新设定开始读取的位置,并继续读取和写数据
startIndex += buffersize;
reval = reader.GetBytes(, startIndex, outbyte, , buffersize);
}
//将缓冲区内最后剩余的数据写入文件
bw.Write(outbyte, , (int)reval - );
bw.Flush();
bw.Close();
fs.Close();
}
if (reader.Read().ToString() != "")
{
Response.Write(@"<script>alert('读取成功! word的位置在:C:\\" + tb1.Text + ".doc')</script>");
}
else
{
Response.Write("<script>alert('读取失败')</script>");
}
reader.Close();
conn.Close(); }
}
}

点滴积累【C#】---C#实现上传word以流形式保存到数据库和读取数据库中的word文件。的更多相关文章

  1. 点滴积累【C#】---对上传文件的路径进行加密,以免将路径暴露在浏览器上,避免一些安全隐患!

    效果: 描述: 本事例是为解决在上传或下载文件时避免将路径暴露在外.在上传时将路径进行加密保存到DataTable或数据库中,在下载是再读取DataTable中加密数据进行解密下载. 代码: [前台代 ...

  2. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  3. Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  4. C&C控制服务的设计和侦测方法综述——DDoS攻击,上传从宿主机偷窃的到的信息,定时给感染机文件加密勒索等。

    这篇文章总结了一些我在安全工作里见到过的千奇百怪的C&C控制服务器的设计方法以及对应的侦测方法,在每个C&C控制服务先介绍黑帽部分即针对不同目的的C&C服务器设计方法,再介绍白 ...

  5. 七牛--关于图片上传方向不统一的问题--主要关于图片EXIF信息中旋转参数Orientation的理解

    [图片引用方向纠正]直接在图片后面添加 ?imageMogr/auto-orient eg:http://data.upfitapp.com/data/2016/10/18/1629114767606 ...

  6. 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)

    原理:监听粘贴 → 获取粘贴内容 → 将内容上传 → 抓取后返回替换至input 我们在生产中用到的界面: 测试地址 http://sms.reyo.cn 用户名:aa 密码:123456 以下是PH ...

  7. tornado之文件上传的几种形式form,伪ajax(iframe)

    1直接form提交给后台处理 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  8. java接受安卓及ios App上传的图片,并保存到阿里OSS

    做后台的时候,写了两个方法,分别用来获取安卓和苹果IOS端上传的头像,保存到阿里云OSS图片存储服务器上.(SMM框架) 安卓及H5版本: /** * 上传用户头像 */ @RequestMappin ...

  9. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

    背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...

随机推荐

  1. mysql远程表/视图-应用

    Date :20140213Auth: Jin参考http://blog.sina.com.cn/s/blog_757b0e130101erl5.htmlhttp://dev.mysql.com/do ...

  2. Web安全测试指南--文件系统

    上传: 编号 Web_FileSys_01 用例名称 上传功能测试 用例描述 测试上传功能是否对上传的文件类型做限制. 严重级别 高 前置条件 1.  目标web应用可访问,业务正常运行. 2.  目 ...

  3. Understanding how SQL Server executes a query

    https://www.codeproject.com/Articles/630346/Understanding-how-SQL-Server-executes-a-query https://ww ...

  4. python笔记12-python多线程之事件(Event)

    前言 小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现 Event(事件) Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果 ...

  5. Linux下启动和停止Java应用程序的Shell脚本

    转自:http://blog.csdn.net/jadyer/article/details/7960802 资料参考来源自兔大侠,并略作修改:http://www.tudaxia.com/archi ...

  6. 使用Hexo快速搭建一个博客,并部署到github

    本文旨在记录一下我在通过hexo搭建一个博客,并将其部署在github上面的过程,也供我自己在以后的使用过程中能够快速学习和参考.需要看更详细或者官方文档的可以点击Hexo官方文档进行查看. 安装前提 ...

  7. Eclipse 生成WebService客户端代码

    1. 打开Eclipse,新建一个普通的Javaproject,然后在新建的项目上右键点击项目,New---->other---->Web Services -------->Web ...

  8. 万里长征第二步——django个人博客(第三步 —— 设置一些全局变量)

    可以将一些全局变量设置在settingg.py里 #网站的基本信息配置 SITE_NAME = 'John的个人博客' SITE_DESC = '专注学习Python开发,欢迎和大家交流' WEIBO ...

  9. 二.Consumer、Producer简单例子

    1.先导入jar包,我使用的是maven <dependency> <groupId>com.alibaba.rocketmq</groupId> <arti ...

  10. 吐血整理 Delphi系列书籍 118本(全)

    Delphi 教程 系列书籍 网友(老帅)整理 001_<Delhpi6数据库设计思想与实践> 002_<Delphi6应用开发指南> 003_<Delphi6开发人员指 ...