ASP程序图片以二进制流的形式存入oracle数据库实例

合集下载

ASP.NET中基于流技术的二进制图片上传与显示

ASP.NET中基于流技术的二进制图片上传与显示
及 方法 .
在 We 应 用 系统 中 , 会 遇 到 图 片 的 存 储 与 显示 的 问题 . 某 网 上 报 名 系 统 , 求 用 户 上 传 照 片 , b 常 如 要 图 片 保存 后 在 网 页 中显 示 . 般 可 采用 两 种 方 式来 存 储 图片 , 种 方 法 是把 图片 以独 立 文 件 的 形 式存 储 在 一 一 服务 器 的指 定 文 件 夹 中 , 将 路 径 保 存 在 数 据 库 表 字 段 中 . 再 另一 种 方 法 是 把 图片 转 换 成 二进 制 的数 据 格 式直 接 存 储 在 数 据 库 的I g 字 段 中 . 一 种 方 法 能 减 轻数 据 库 管 理 系 统 的 负 担 , 取 方 便 , 文件 安 全 ma e 第 存 但 性 差 , 易 被 修 改 , 换和 删 除 , 种 方 式 适 合 于对 图片 安 全 性 要 求 不 高 、 容 替 这 图片 比较 大 或 经 常 需 要 编辑 的 情 况 . 二 种 方 法 管 理 方 便 、 全 性 高 , 会 使 数 据 库 迅 速 变 得 庞 大 , 询 速 度 慢 , 种 方 式 适 合 于 图 片 第 安 但 查 这 不 大 、 为 只 读 应 用 的情 况 . 于 第 一 种 方 式 的 实 现 方 法 比较 简 单 , 文 主 要 针对 第 二 种 图片 的存 储 方 多 对 本
汤晓 燕 ,王 磊
(. 州 工 业 职 业技 术 学 院 信 息工 程 系 , 江 苏 苏 州 1苏 2 5 0 ;2 苏 州市 职 业 大 学 计 算 机 工 程 系 ,江 苏 苏州 1 14 . 2 5 0) 1 14
摘 要 : 以二 进制格 式在数据 库 中存储 图片具有 安 全性 高、 易于 管理 等优 势 . 以博客 相册 为例 , 讨

二进制文件在数据库中的保存

二进制文件在数据库中的保存

二进制文件在数据库中的保存作者:李闽来源:《电脑知识与技术》2012年第18期摘要:文章介绍了在环境下,对于SQL server数据库,存储大型二进制对象的方法。

通过HttpPostedfile类的InputStream属性获得Stream对象,用Stream对象读取欲上传文件内容。

建立数据库连接,将文件存入数据库的二进制数据类型中。

关键词:二进制文件;数据库;HttpPostedfile类;Stream对象;上传中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)18-4410-02Binary Files in the Database StorageLI Min(Suzhou Art, Design Technology Institute, Suzhou 215000, China )Abstract: This paper introduces the environment in SQL server database to store large binary objects method. By HttpPosted file class InputStream property to a Stream object, use the Stream object to read to upload the contents of the file. Establish a database con nection, the binary data type of the file stored in the database.Key words: binary files; database; class HttpPostedfileL; object StreamL; upload上传到网站的文件有多种形式,有图形图像文件、声音文件、视频文件、文该文件等。

将文件上传、下载(以二进制流保存到数据库)

将文件上传、下载(以二进制流保存到数据库)

07. {
08. byte[] buffer = null;
09. int result = 0;
10. if (!string.IsNullOrEmpty(filePath))
11. {
12.
String file = HttpContext.Current.Server.MapPath(filePath);
将文件上传、下载(以二进制流保存到数据库)
1、将文件以二进制流的格式写入数据库
首先获得文件路径,然后将文件以二进制读出保存在一个二进制数组中,与数据库建立连接,在SQL语句中将二进制数组赋值给相应的参 数,完成向数据库中写入文件的操作
[csharp]
01. /// 将文件流写入数据库
02. /// </summary>
03. /// <param name="filePath">存入数据库文件的路径</param>
04. /// <param name="id">数据库中插入文件的行标示符ID</param>
05. /// <returns></returns>
06. public int UploadFile(string filePath, string id)
17.
{
18.
mandText = "update DomesticCompanyManage_Main_T set ZBDocumentFile = @fileContents where MainID ='"
19.
cmd.Parameters.AddRange(new[]{

asp下轻松实现将上传图片到数据库的代码

asp下轻松实现将上传图片到数据库的代码

asp下轻松实现将上传图⽚到数据库的代码轻松实现将上传图⽚到数据库很久就想⾃⼰写⼀写程序了,不过由于赖就不想写我,今天刚好有空,所以写了这个⼩⼩的程序很容易⼀看就知道的,不多说了就此开始: 我们做⼀个上传的。

数据据库的字段就id⾃动编号 big 字段类型是 OLE 呵呵就简单的那个字段好了 uppic.asp上传程序名 <% dim rs dim formsize,formdata,bncrlf,divider,datastart,dataend,mydata formsize=request.totalbytes '取得客户端发过来的⼤⼩ formdata=request.binaryread(formsize)'把客户发过来的数据转成⼆进制作 bncrlf=chrB(13) & chrB(10) divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1) datastart=instrb(formdata,bncrlf & bncrlf)+4 dataend=instrb(datastart+1,formdata,divider)-datastart mydata=midb(formdata,datastart,dataend)'上⾯总共是取得图⽚的⼆进制数据 %> <!--#include file="conn.asp"--> <% sql="select * from pic order by id desc" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql,conn,3,2 rs.addnew rs("big").appendchunk mydata '增加到数据库中 rs.update set rs=nothing set conn=nothing %> 接下来是显⽰图⽚ display.asp <!--#include file="conn.asp"--> '这个⼤家都知道吧,他就是与数据库连的⼀个程序了 <% id=request("id") set rs=server.createobject("ADODB.recordset") sql="select * from pic where id=" & id rs.open sql,conn,1,1 Response.ContentType = "text/html" '显⽰图⽚的格式也可以⽤ 'Response.ContentType = "image/gif" 以gif显⽰ 'Response.ContentType = "image/jpg" 以jpg显⽰ Response.BinaryWrite rs("big") '显⽰图⽚ rs.close set rs=nothing set connGraph=nothing %>。

将图片转换成二进制存储在数据库中

将图片转换成二进制存储在数据库中
sqlCon.Open();
SqlCommand sqlCom = new SqlCommand("insert into photo (photo) values(@photo)", sqlCon);
SqlParameter sqlPar1 = new SqlParameter("@photo", SqlDbType.Binary, 8000);
string str = @"E:/学生党员信息管理系统/其它/默认相片.jpg";
file = new FileStream(str, FileMode.Open, FileAccess.Read);
Byte[] byteSQLData = new byte[file.Length];
file.Read(byteSQLData, 0, byteSQLData.Length);
file = new FileStream(str, FileMode.Open, FileAccess.Read);
Byte[] byteSQLData = new byte[file.Length];
file.Read(byteSQLData, 0, byteSQLData.Length);
file.Close();
{
this.getPhotoByte(); //调用方法显示保存在数据库中的图片
}
private void pictureBox1_Validated(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{

ASP.NET(C#)上传图片(二进制)

ASP.NET(C#)上传图片(二进制)

(C#)上传图⽚(⼆进制)此⽅法适合(C#)+OracleOracle 表中字段类型为Blob#region 上传⽂件(⼆进制)//static public Byte[] FileToBinary(FileUpload hifile){try{if (hifile.HasFile){if (IsAllowedExtension(hifile)){//取得上传⽂件的⼤⼩int FileLen = hifile.PostedFile.ContentLength;Byte[] FileData = new Byte[FileLen];//创建访问客户端上传⽂件的对象HttpPostedFile hp = hifile.PostedFile;//创建数据流对象Stream sr = hp.InputStream;//将图⽚数据放到FileData数组对象实例中,0代表数组指针的起始位置,FileLen代表指针的结束位置sr.Read(FileData, 0, FileLen);//string id = "0";//BLL.Picture.AddPictures(id,"name",Convert.ToString(FileData),"url","说明");return FileData;//返回⼆进制⽂件流只要把它存⼊数据库即可}else{//Response.Write("<script languge = ‘javascript‘ type = ‘text/javascript‘>alert(‘上传⽂件格式不对,只允许上传jpg和gif格式的⽂件‘);</script>");return null;// "上传⽂件格式不对,只允许上传jpg和gif格式的⽂件";}}else{return null;// "请选择上传⽂件";//Response.Write("<script language = ‘javascript‘ type = ‘text/javascript‘>alert(‘请选择上传⽂件‘);</script>");}}catch{return null;}}#endregion。

图片或文件在数据库存储

图片或文件在数据库存储

图⽚或⽂件在数据库存储对于图⽚或者⽂件的存储,⽬前主要两种⽅式:1.把图⽚直接以⼆进制形式存储在数据库中; ⼀般数据库提供⼀个⼆进制字段来存储⼆进制数据。

⽐如mysql中有个blob字段。

oracle数据库中是blob或bfile类型。

2.图⽚存储在磁盘上,数据库字段中保存的是图⽚的路径;下⾯详细介绍⼀下这两种存储⽅式。

⼀、图⽚以⼆进制形式直接存储在数据库中: 1.存储实现: ⼤体思路: (1)、将读取到的图⽚⽤程序转化成⼆进制形式; (2)、结合insert into 语句插⼊数据表中的blob类型(bfile类型)字段中去。

(3)、从数据库取出图⽚展⽰的时候。

则是直接发送图⽚内容 2.关于mysql中的blob类型 bolb像int型那样,分为blob、MEDIUMBLOB、LONGBLOB。

其实就是从⼩到⼤, blob 容量为64KB ,MEDIUMBLOB 容量为16M,LONGBLOB 容量为4G。

通常是采⽤语⾔的serialize()函数,将对象序列化以后,存⼊该类型的。

(serialize()返回字符串,此字符串包含了表⽰value的字节流,可以存储于任何地⽅)。

3. 缺点 (1).占⽤与mysql交互的通信时间; (2).图⽚⼀般⽐较⼤,超过1M后,还需要修改mysql中限制通信数据⼤⼩的配置 (3).影响数据库性能,导致限制了整个程序的性能; 4.优点 (1).备份图⽚数据和迁移数据⽅便 图⽚以⼆进制形式存储在数据库,有⼀个好处:备份的时候⽅便。

直接备份数据库,图⽚也跟着备份。

换句话说,迁移环境的时候是⽅便。

⽽图⽚放在磁盘上的话,数据库中存储的只是图⽚路径。

备份数据库后。

磁盘上的图⽚也要跟着备份才⾏。

但是,备份这个好处不是很明显。

图⽚在磁盘上,备份磁盘也没很⼤的事情。

打包压缩也可以了。

互联⽹环境毕竟与传统的软件开发不同,web开发⽐较关注⽹站速度。

也就是数据库的速度。

就像互联⽹开发中,有时候为了速度,⽤空间换时间的做法⽐较普遍,所以往往在设计数据库的时候并不⼀定遵循传统数据库设计三⼤范式。

asp.net(c#)实现从sqlserver存取二进制图片

asp.net(c#)实现从sqlserver存取二进制图片

(c#)实现从sqlserver存取⼆进制图⽚有⼀个员⼯表Employee,需要保存员⼯照⽚(Photo)到数据库(sql server)上。

员⼯照⽚对应的字段是varbinary(max),也就是要存成⼆进制⽂件类型(这和以前讨巧地存图⽚⽂件路径就不相同了),默认可以为空。

下⾯说说主要实现思路:1、存取图⽚(1)、将图⽚⽂件转换为⼆进制并直接存进sql server///<summary>///将转换成⼆进制码的图⽚保存到数据库中///</summary>public static bool SaveEmployeeImg2Db(Employee model, string path){try{Byte[] imgBytes = SetImgToByte(path);model.Photo = imgBytes;bool flag=EmployeeService.SaveEmployeePhoto(model); //EmployeeService是公司内部的库调⽤,插⼊或者更新照⽚,这⾥不透露细节return flag;}catch (Exception ex){throw ex;}}(2)、在⽹页中上传图⽚{string saveFilePath = serverPath + DateTime.Now.ToString("yyyyMMddHHmmss") + fileName;try{//先存图⽚到服务器this.fuPhoto.PostedFile.SaveAs(saveFilePath);//转成⼆进制Employee model = new Employee(int.Parse(id)); //id是EmployeeId,这⾥是模拟字段bool flag = UploadHelper.SaveEmployeeImg2Db(model, saveFilePath);}catch{//("照⽚上传失败");}finally{//最后删掉该图⽚if (System.IO.File.Exists(saveFilePath)){System.IO.File.Delete(saveFilePath);}}}}else{//("全选择要上传的照⽚");}}(3)、从数据库取出照⽚(返回格式Image)Code上⾯的这个⽅法取出来之后,如果在winform下,直接给⼀个PictureBox的Image属性赋值就可以了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Asp图片以二进制流的形式存入oracle数据一、运行环境与开发语言要求:1、Win2003操作系统(安装方法省略)2、IIS 6.0(安装方法省略)Asp网站配置方法如下图:图1图3 图4图5图6 访问首页方法如下图:3、Oracles数据库(安装建库方法省略)创建表,通过SQL语句创建:图1二、网站各页面代码如下:1、连接数据库页面:conn_oracle.asp代码如下:<%'打开数据库连接Set Conn = Server.CreateObject("ADODB.Connection")myDSN = "Provider=OraOLEDB.Oracle;Data Source=TEST65;User ID=TEST65;PASSWORD=oracle;Persist Security Info=True"Conn.Open myDSN%>2、已上传图片展示首页:default.asp代码如下:<!--#include file="conn_oracle.asp"--><%dim i,intPage,page,pre,last,filepathset rs = server.CreateObject("adodb.recordset")sql="select * from pic order by id desc" '这里是条件和表根据需要自己改rs.Open sql,conn,3,1rs.PageSize = 6 '这里设定每页显示的记录数pre = truelast = truepage = trim(Request.QueryString("page"))if len(page) = 0 thenintpage = 1pre = falseelseif cint(page) =< 1 thenintpage = 1pre = falseelseif cint(page) >= rs.PageCount thenintpage = rs.PageCountlast = falseelseintpage = cint(page)end ifend ifend ifif not rs.eof thenrs.AbsolutePage = intpageend if%><style type="text/css"><!--font-size: 18px;font-weight: bold;}--></style><title>图片展示首页</title><table width="100%" border="0"><tr><td height="36" align="center"><span class="STYLE2">图片展示</span>|<a href="up.asp">上传图片</a></td></tr></table><table border="0" align="center" cellpadding="0" cellspacing="4" ><tr><%j=1for i=1 to rs.PageSizeif rs.EOF or rs.BOF then exit forif j=4 thenj=1%></tr><tr><%end if%><td><table ><tr><td align="center"><a href="ly.asp?id=<%=rs("id")%>" target="_blank" ><img src="kkk.asp?id=<%=rs("id")%>" width="220" height="165" border="0" /></a></td></tr><tr><td height="34" align="center"><a href="ly.asp?id=<%=rs("id")%>" target="_blank" class="STYLE1" >第<%=left(rs("id"),15)%><!--15为从左起限定显示字数-->张图</a></td></tr></table></td><%j=j+1rs.movenextnext%></tr></table><tr><td height="20" colspan="4"><div align="center"><table width="100%" height="29" border="0" cellpadding="0" cellspacing="0" borderColorLight=#808080<%if rs.pagecount > 0 then%><td width="46%" align="left" bgcolor="#CCFFFF"><div align="center" class="STYLE1">当前<%=intpage%>/<%=rs.PageCount%>页&nbsp;&nbsp;共<%=rs.RecordCount%>条&nbsp;&nbsp;每页<%=rs.PageSize%>条</div></td><%else%><td width="2%" align="left" bgcolor="#CCFFFF"><span class="STYLE1"></span></td><%end if%><td width="52%" align="left" bgcolor="#CCFFFF"> <div align="center" class="STYLE1"><a href="default.asp?page=1">首页</a>|<%if pre then%><a href="default.asp?page=<%=intpage -1%>">上页</a>|<%end if%><%if last then%><a href="default.asp?page=<%=intpage +1%>">下页</a> |<%end if%><a href="default.asp?page=<%=rs.PageCount%>">尾页</a>|转到第<select name="sel_page" onchange="javascript:location=this.options[this.selectedIndex].value;"><%for i = 1 to rs.PageCountif i = intpage then%><option value="default.asp?page=<%=i%>" selected><%=i%></option><%else%><option value="default.asp?page=<%=i%>"><%=i%></option><%end ifnext%></select>页</font></div></td></tr></table></div></td></tr></table>3、图片上传处理页面up.asp代码如下:<!--#include file="conn_oracle.asp"--><html><head><title>上传图片</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><Script language="javascript">if(theform.file.value==""){alert("请点击浏览按钮,选择您要上传的jpg或gif文件!")theform.file.focus();return (false);}else{str= theform.file.value;strs=str.toLowerCase();lens=strs.length;extname=strs.substring(lens-4,lens);if(extname!=".jpg" && extname!=".gif"){alert("请选择jpg或gif文件!");return (false);}if(theform.pic_name.value==""){alert("请输入名称!")theform.pic_name.focus();return (false);}}return (true);}</script><script language=vbscript>function form1_Onsubmit()if document.form1.pic_name.value="" thenform1_onsubmit=falseexit functionelsedocument.form1.action="save.asp?pic_name="&document.form1.pic_name.value&" "end ifend function</script></head><body bgcolor="#FFFFFF"><form name="form1" method="post" action="save.asp" onSubmit="return mysubmit(this)" enctype="multipart/form-data"><p></p><table width="100%" height="135" border="0"><tr><input type="file" name="file" size="35"></b></font></strong></td></tr><tr><td></td><td width="7%"></td><td width="63%"><font color="#666699"><b><input type="submit" name="Submit" value="确定上传"><input type="reset" name="reset" value="重设表单"></b></font></td></tr></table></form></body></html>4、上传图片保存文档页面:save.asp代码如下:<!--#include file="conn_oracle.asp"--><%dim pic_namedim rsdim sqlpic_name=request("pic_name")a=split(pic_name," ") '分割字符串on error resume next '产生错误的语句之后继续执行FormSize = Request.TotalBytes'获取提交数据量的总字节数FormData = Request.BinaryRead(FormSize) '把客户发过来的数据转成二进制作Image=ImageUp (FormSize,Formdata) '这里就是图像部分了set rs=server.createobject("adodb.recordset")rs.Open "select * from pic order by id desc",conn,3,3'如果数据库无数据时,指定id为1,因为id为主键不能为空if cint(rs("id"))="" thenid=1elseid= cint(rs("id"))+cint(1)end if'判断结束rs.AddNew '向数据据里写入数据'rs("title") = a(0)rs("id")=idrs.Closeset rs=nothingresponse.redirect"ly.asp?id="&id&"" '任务结束后跳转到首页%><%function ImageUp(formsize,formdata)bncrlf=chrb(13) & chrb(10)divider=leftb(formdata,instrb(formdata,bncrlf)-1) '分隔标志串datastart=instrb(formdata,bncrlf&bncrlf)+4 '分隔标志串长度dataend=instrb(datastart+1,formdata,divider)-datastart '减去分隔标志串长度imageup=midb(formdata,datastart,dataend) ' 获取最终数据end function%>5、根据ID号读取图片信息页面:kkk.asp代码如下:<!--#include file="conn_oracle.asp"--><% '显示相片页dim rsdim adrdim sqldim idid = request("id")set rs=server.CreateObject("adodb.recordset")'创建一个数据库的记录集sql="SELECT * FROM pic WHERE id ="&idrs.Open sql,conn,3,1response.contenttype="image/*" '输出的类型可以是imgae的任何类型,包括jpg/bmp/gif等等Response.BinaryWrite rs("img") '读出img字段,把2进制的数据转换成图片rs.Closeconn.close%>6、根据ID号浏览图片信息-图片放大页面:ly.asp<!--#include file="conn_oracle.asp"--><%id=request("id")set rs=server.createobject("adodb.recordset")sql="select * from pic where id="&idrs.open sql,conn,1,1%><style type="text/css"><!--body {margin-top: 0px;}.STYLE1 {font-size: 16px;font-weight: bold;}--></style><table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="center"><img src="kkk.asp?id=<%=request("id")%>" width="700" height="525"></td> </tr><tr><td height="38" align="center"><span class="STYLE1"><%=left(rs("title"),15)%></span></td> </tr></table>三、访问网址及截图:http://localhost/default.asp首页截图如下图:。

相关文档
最新文档