如何打开数据库中流文件

honkerhero 2007-10-21 11:39:29
现在的问题是,当我把一个文件选中后,该文件会以一个二进制流的方式写进数据库表的一个字段中(SQL2005),在显示的时候,我会用一个TREELIST来显示这些文件,当用户双击该文件名时,我要从数据库中读取流,然后以相应的程序打开,文件类型不确定。
例:用户选中第一个文件,aaa.doc,上传到数据库,每二个文件bbb.xls,第三个文件ccc.pdf,则在显示的时候如下:
aaa.doc
bbb.xls
ccc.pdf
当用户双击其中一个时,以流的文件从数据库中读出来,再以相应的程序打开
例,aaa.doc以WORD文件打开,bbb.xls以EXCEL文件打开,ccc.pdf以用户机器上所安装的能读取PDF文件的程序打开

解决方案
1、不用存临时文件的优先考虑,因为临时文件的删除时间不确定
2、使用临时文件和system.dia...process.start()的就不用说了,有其它更好的办法请留言
3、我这是C/S程序,B/S类的解决方案只作为参考,对解决问题帮助不大者不另外赠分

各位有什么好意见啊。帮助解决问题者,别赠分100,如果解决方案太棒,可赠200
...全文
892 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
honkerhero 2007-10-29
  • 打赏
  • 举报
回复
找到了,大家把分均分了吧,实在不是我想要的
honkerhero 2007-10-23
  • 打赏
  • 举报
回复
楼上的,我知道你所说的一切,我现在不知道的是如何处理这个流,它会自动被相应的程序打开
B/S中,IE会自动处理这些东西
fcuandy 2007-10-21
  • 打赏
  • 举报
回复
记得去年有人问过, 我搜了半天贴子在csdn上找不到了.
在google找到了.



原贴被转录的地址
http://fenlei8.52csdn.net/673952


以下是部分原贴内容

使用stream读出来,再用Response.BinaryWrite即可.

数据库:
truncate table dali --清表
insert dali values(1,0x,'jpg','1') --插记录用于以后写binary数据
exec sp_textcopy '127.0.0.1','sa','xxx','test','dali','MyImage','c:\1.jpg','where ID=1','I' --将 c:\1.jpg以二进制方式写入表dali的id=1的行的myimage字段



显示代码:

SqlConnection cn=new SqlConnection("server=127.0.0.1;uid=sa;pwd=xxx;database=test");
cn.Open();
SqlCommand cmd=new SqlCommand("select myimage from dali",cn);


int bufferSize = 100;
byte[] outbyte = new byte[bufferSize];
long retval;
long startIndex = 0;


SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess);

while (dr.Read())
{


startIndex = 0;
retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
while (retval == bufferSize)
{

Response.BinaryWrite(outbyte);
startIndex+= bufferSize;
retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
}

Response.BinaryWrite(outbyte);
}
dr.Close();
cn.Close();

我清表插图片是为了在页面上看到输出效果.
你插pdf,doc当然都可以,不过在页面输出时将生成二进制文件流,输出将会是乱码,你需要输出文件头信息,我懒得查pdf和doc在html声明中的具体写法,所以只写进了jpg的数据.因为ie是直接支持jpg的显示的.
16进制是显示给你看.计算机中以二进制存储这是常识不用我说了吧.
我查了一下.要声明输出 doc 的话,在 我给你的代码 while(dr.Read())上一行加上两句即可:

Response.ContentType="application/vnd.ms-word";
Response.AddHeader("Content-Disposition", "attachment; filename=fdsfsd.doc");

pdf的你自己查吧
fcuandy 2007-10-21
  • 打赏
  • 举报
回复
winform的一样的,只不过不需要 Response.ContentType而已.
Response.ContentType只是输出一些信息给浏览器看的, 因为发到浏览器是二进制代码,浏览器不会去分析代码里的文件头信息

而 一个文件的流数据中, 本身已包含了自己的头信息. 只需要以相应的扩展名保存即可.
比如 exe,dll的pe头, bmp文件的bmp信息等等,本身就包含在自己的流数据中.
vlysses 2007-10-21
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20021126/19/1207615.html
一定对你有帮助
honkerhero 2007-10-21
  • 打赏
  • 举报
回复
这是B/S的,我的是WINFORM程序,估计是要用到进程的
汽车租赁系统 一 课程设计的目的和意义 随着汽车租赁领域的繁荣和飞速发展,租车行业的信息量越来越大,越来越复杂。传 统的管理方式无法适应当前迅速发展的市场,计算机和计算机网络技术迅速发展和普及 ,使用汽车租赁系统可以使得汽车租赁的效率得到很大的提高,同时降低经营成本,提 高利润。 应用对数据库原理的理论学习,通过实践熟练掌握数据库创建、基本操作、程序系统 的建立。并通过数据库原理软件设计实践,巩固在课堂教学中学习的关于数据库原理的 有关知识和数据库系统建立的方法,熟练掌握对于实际问题,为了建立一个关系数据库 信息管理系统,必须得经过需求分析、概念结构设计、逻辑结构设计、物理结构设计、 数据库实施以及数据库运行和维护的一般过程,为毕业设计打下基础。 二、术语定义 E-R图:为理解和表示问题域的信息而建立的数据模型,简称E- R图。具有实体、关系、属性三要素。 数据流图:数据流图是用来描绘软件系统逻辑模型的图形工具,是描绘信息在系统中流 动和处理的情况的。 数据字典:数据字典是对数据流图中出现的所有数据元素、数据流、文件、处理的定义 的集合。 三、数据库的要求 主要功能:本系统包括客户信息管理、车辆信息管理、汽车租赁归还管理、会员类型管 理、会员信息管理、保险公司管理、汽车经销商管理等。具有添加、修改、查询、删除 等功能。方便租赁公司的工作,提高租赁公司的工作质量和工作效率。 性能要求:租借和归还信息必须及时更新,汽车租赁系统的信息必须无差错的存储在主 服务器上。 输出要求:数据完整,详实。 输出要求:简捷,快速,实时、准确。 安全与保密要求:管理员享有对客户信息库及汽车租借信息库和职员信息库的管理与修 改。工作人员只享有对汽车租赁信息库的部分修改(写入与读出)。 完成期限:预计三个月 一 汽车租赁系统需求分析: 系统功能需求: 1)客户可以通过不同的方式(包括电话、前台、网上)预订车辆 1、能够保存客户的预订申请单 2、能够保存客户的历史记录 3、工作人员可以处理申请 4、技术人员可以保存对车辆检修的结构 2)满足以上功能需要以下几个模块: 1、基本数据维护模块。基本数据维护模块提供了使用者录入、修改并维护基本数据的途 径。例如对客户的个人信息、租赁信息、车辆的基本信息等的录入和修改 2、基本业务模块。基本业务模块中,客户可以填写汽车租赁申请表,工作人员负责处理 这些表格。同时,技术人员可以提交每辆车的状态,以便工作人员根据这些资料决定 是否批准客户的请求。 3. 数据库管理模块。在汽车租赁系统中,对客户、工作人员及车辆的信息都要进行统一管 理,车辆的租赁情况也要进行详细的登记。 4. 信息查询模块。信息查询模块主要用于查询相关信息,例如工作人员查询车辆信息和客 户信息等。 如以下层次图所示: 数据字典 1、公司数据字典 "属性名 "存储代 "类型 "长度 "备注 " " "码 " " " " "编号 "Fno "char "20 "汽车租赁公司的编号 " "名称 "Fname "char "20 "汽车租赁公司名称 " "电话 "Ftell "char "20 "汽车租赁公司联系方式 " "地址 "Faddres"char "50 "汽车租赁公司的地址 " " "s " " " " "电子邮箱"Femail "char "50 "汽车租赁公司的电子邮箱 " "传真 "Ffax "char "20 "汽车租赁公司的传真 " "邮编 "Fzip "char "10 "汽车租赁公司的邮编 " 2、汽车数据字典 "属性名 "存储代 "类型"长度 "备注 " " "码 " " " " "编号 "Cno "char"20 "汽车车牌号 " "名称 "Cname "char"20 "汽车品牌名 " "类型 "Ctype "char"20 "汽车所属类型 " "颜色 "Colour "char"20 "汽车颜色 " "使用时间"Ctime "char"20 "汽车从投入使用到现在的时间 " "行驶里程"Cmileag"char"20 "汽车总共行驶的时间 " " "e " " " " "租赁价格"Cprice "long"10 "租赁汽车每小时多少钱 " "逾期价格"Oprice "long"10 "超过该时间每小时多少钱 " "状态 "State "char"10 "在库或不在库 " 3、车辆保险数据字典 "属性名 "存储代 "类型 "长度 "备注 " " "码 " " " " "车险号 "Bno "char "20 "车辆保险类型号码 " "车险名 "Bname "char "20 "车辆保险保单名字 " "所保车号"Cnumber"char "20 "投保车辆的车牌号 " "投保时间"Bdate "date "8 "签订保单的时间 "
。 汽车租赁系统数据库设计 汽车租赁系统 课程设计的目的和意义 随着汽车租赁领域的繁荣和飞速发展,租车行业的信息量越来越大,越来越复杂 。传统的管理方式无法适应当前迅速发展的市场,计算机和计算机网络技术迅速发展和 普及,使用汽车租赁系统可以使得汽车租赁的效率得到很大的提高,同时降低经营成本 ,提高利润。 应用对数据库原理的理论学习,通过实践熟练掌握数据库创建、基本操作、程序 系统的建立。并通过数据库原理软件设计实践,巩固在课堂教学中学习的关于数据库原 理的有关知识和数据库系统建立的方法,熟练掌握对于实际问题,为了建立一个关系数 据库信息管理系统,必须得经过需求分析、概念结构设计、逻辑结构设计、物理结构设 计、数据库实施以及数据库运行和维护的一般过程,为毕业设计打下基础。 二、术语定义 E-R图:为理解和表示问题域的信息而建立的数据模型,简称E- R图。具有实体、关系、属性三要素。 数据流图:数据流图是用来描绘软件系统逻辑模型的图形工具,是描绘信息在系统中流 动和处理的情况的。 数据字典:数据字典是对数据流图中出现的所有数据元素、数据流、文件、处理的定义 的集合。 三、数据库的要求 主要功能:本系统包括客户信息管理、车辆信息管理、汽车租赁归还管理、会员类型管 理、会员信息管理、保险公司管理、汽车经销商管理等。具有添加、修改、查询、删除 等功能。方便租赁公司的工作,提高租赁公司的工作质量和工作效率。 性能要求:租借和归还信息必须及时更新,汽车租赁系统的信息必须无差错的存储在主 服务器上。 输出要求:数据完整,详实。 输出要求:简捷,快速,实时、准确。 安全与保密要求:管理员享有对客户信息库及汽车租借信息库和职员信息库的管理与修 改。工作人员只享有对汽车租赁信息库的部分修改(写入与读出)。 完成期限:预计三个月 汽车租赁系统需求分析: 系统功能需求: 1)客户可以通过不同的方式(包括电话、前台、网上)预订车辆 1、能够保存客户的预订申请单 2、能够保存客户的历史记录 3、工作人员可以处理申请 4、技术人员可以保存对车辆检修的结构 2)满足以上功能需要以下几个模块: 1、基本数据维护模块。基本数据维护模块提供了使用者录入、修改并维护基本数据的途 径。例如对客户的个人信息、租赁信息、车辆的基本信息等的录入和修改 2、基本业务模块。基本业务模块中,客户可以填写汽车租赁申请表,工作人员负责处理 这些表格。同时,技术人员可以提交每辆车的状态,以便工作人员根据这些资料决 定是否批准客户的请求。 数据库管理模块。在汽车租赁系统中,对客户、工作人员及车辆的信息都要进行统一管 理,车辆的租赁情况也要进行详细的登记。 信息查询模块。信息查询模块主要用于查询相关信息,例如工作人员查询车辆信息和客 户信息等。 如以下层次图所示: 数据字典 1、公司数据字典 "属性名 "存储代 "类型 "长度 "备注 " " "码 " " " " "编号 "Fno "char "20 "汽车租赁公司的编号 " "名称 "Fname "char "20 "汽车租赁公司名称 " "电话 "Ftell "char "20 "汽车租赁公司联系方式 " "地址 "Faddres"char "50 "汽车租赁公司的地址 " " "s " " " " "电子邮箱"Femail "char "50 "汽车租赁公司的电子邮箱 " "传真 "Ffax "char "20 "汽车租赁公司的传真 " "邮编 "Fzip "char "10 "汽车租赁公司的邮编 " 2、汽车数据字典 "属性名 "存储代 "类型"长度 "备注 " " "码 " " " " "编号 "Cno "char"20 "汽车车牌号 " "名称 "Cname "char"20 "汽车品牌名 " "类型 "Ctype "char"20 "汽车所属类型 " "颜色 "Colour "char"20 "汽车颜色 " "使用时间"Ctime "char"20 "汽车从投入使用到现在的时间 " "行驶里程"Cmileag"char"20 "汽车总共行驶的时间 " " "e " " " " "租赁价格"Cprice "long"10 "租赁汽车每小时多少钱 " "逾期价格"Oprice "long"10 "超过该时间每小时多少钱 " "状态 "State "char"10 "在库或不在库 " 3、车辆保险数据字典 "属性名 "存储代 "类型 "长度 "备注 " " "码 " " " " "车险号 "Bno "char "20 "车辆保险类型号码 " "车险名 "Bname "char "20 "车辆保险保单名字 " "所保车号"Cnumber"char "20 "投保车辆的车牌号 " "投保时间"Bdate "date "8 "签订保单的时

111,112

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧