怎样将图片上传到数据库进行保存
如何将图片插入到数据库中
试验十数据库编程1、新建项目项目名称为“d bgl”。
2、设计如下窗体:窗体上放置的控件有:7个按钮,一个groupBox,4个label,4个textBox,1个pictureBo x和1个d ataGr idVie w。
3、编写连接数据库的类鼠标单击菜单栏上的“项目”选择“项目”菜单中的“添加类”命令,为“dbgl”项目添加连接数据库的类,类名是:DbConn ectio n。
如下图所示:DbConn ectio n类的代码如下图所示:注意需要引入Sy ste m.Data.SqlCli ent名称空间。
4、编写操作数据的类为“dbgl”项目添加操作数据的类,该类名为“DbOper ation”。
首先,实例化“DbConn ectio n”类,代码如下:其次,编写方法ge tdata set,该方法返回一个DataSet对象的数据集。
代码如下:接着编写执行SQL语句的方法“sqlcmd”。
该方法的代码如下:最后编写方法“GetTab le”,该方法用于返回一个Da taTab le类型的数据。
代码如下:5、为窗体编写代码,完成对数据库操作的功能。
在窗体的代码视图中:(1)定义一个窗体级别的Bi nding Manag erBas e类变量m ybind用来管理多个控件绑定到一个数据源,以便实现同步操作。
代码如下:(2)在窗体的Lo ad事件中编写,为相关控件绑定相数据。
代码如下:(3)为“第一条”按钮控件编写代码:代码如下图所示:(4)为“下一条”按钮控件编写代码:代码如下图所示:(5)为“上一条”按钮控件编写代码:代码如下图所示:(6)为“最后一条”按钮控件编写代码:代码(略)。
自己编写(7)给“新增”按钮编写代码,完成添加一条记录首先,给项目添加一个窗体,窗体名称为“FormBa se”。
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Express实现前端后端通信上传图⽚之存储数据库(mysql)傻⽠式教程(⼀)在前端这个坑⾥摸爬滚打已经⼀年多了,终于下定决⼼写下⾃⼰第⼀篇博客(虽然内容原创居少,算是个整合内容),开始使⽤express的原因是因为⾃⼰想测试接收下前端上传图⽚并返回,实现图⽚上传。
后端各位⼤⼤们⼜都⽐较忙,没办法了,只能⾃⼰上了(哎,都是逼出来的)。
此教程适合没有接触过node的web前端开发,快速构建⾃⼰的框架,基于express4.x。
安装完成后,继续安装express的应⽤⾻架,⽣成默认项⽬$ npm install express-generator -g (-g表⽰全局安装,下次可以直接使⽤,不⽤再次安装) 接着在myapp⽂件夹下直接运⾏express,项⽬⽬录就直接⽣成了 然后安装所有依赖包:$ npm install 启动这个应⽤(MacOS 或 Linux 平台):$ DEBUG=myapp npm start Windows 平台使⽤如下命令:> set DEBUG=myapp & npm start 看到这个页⾯时,⼤家已经完成了基础的项⽬构建,继续往上添加⾃⼰的代码就可以了。
(到这部后⼤家可以把public ⽬录下的⽂件夹修改为⾃⼰喜欢的格式,例如:js,css,只是⼀个路径⽽已) 现在⼤家打开核⼼的app.js 下⾯咱们先不急着上传图⽚,先测试下前端发送的post和get请求。
以post请求为例,咱们把layout.jade修改成下⾯的样⼦doctype htmlhtmlheadtitle= titlelink(rel='stylesheet', href='/css/style.css')script(type="text/javascript", src="/js/jquery.js")script(type="text/javascript", src="/js/index.js")bodyblock content 在public/js下新建个index.js,加载jquery(只是为了简写的ajax)有⼈可能会问为什么会没有public路径,因为Express 内置的 express.static 可以⽅便地托管静态⽂件,例如图⽚、CSS、JavaScript ⽂件等,详细内容点这⾥,对应app.js的内容为e(express.static(path.join(__dirname, 'public')));只有这样才能读取到⽂件。
C# 图片保存到数据库和从数据库读取图片并显示
C# 图片保存到数据库和从数据库读取图片并显示图片保存到数据库的方法:public void imgToDB(string sql){ //参数sql中要求保存的imge变量名称为@images//调用方法如:imgToDB("update UserPhoto set Photo=@images where UserNo='" + temp + "'");FileStream fs = File.OpenRead(t_photo.Text);byte[] imageb = new byte[fs.Length];fs.Read(imageb, 0, imageb.Length);fs.Close();SqlCommand com3 = new SqlCommand (sql,con);com3.Parameters.Add("@images", SqlDbType.Image).Value = imageb;if (com3.Connection.State == ConnectionState.Closed)com3.Connection.Open();try{com3.ExecuteNonQuery();}catch{ }finally{ com3.Connection.Close(); }}数据库中读出图片并显示在picturebox中:方法一:private void ShowImage(string sql){//调用方法如:ShowImage("select Photo from UserPhoto where UserNo='" + userno +"'");SqlCommand cmd = new SqlCommand(sql, conn);conn.Open();byte[] b= (byte[])cmd.ExecuteScalar();if (b.Length 〉0){MemoryStream stream = new MemoryStream(b, true);stream.Write(b, 0, b.Length);pictureBox1.Image = new Bitmap(stream);stream.Close();}conn.Close();}方法二:当在dg中选中某行时:private void dg_MouseUp(object sender, MouseEventArgs e){//整行选择if (e.Button == System.Windows.Forms.MouseButtons.Left){//用户编号,姓名,性别,身份证号,籍贯,学院,系所,校区,部门,电话,照片//显示相片object imgobj=dg[10, dg.CurrentRow.Index].Value;if (imgobj != null && !Convert.IsDBNull(imgobj)){byte[] imgb = (byte[])imgobj;MemoryStream memStream = new MemoryStream(imgb);try{Bitmap myimge = new Bitmap(memStream);this.pictureBox1.Image = myimge;}catch{DB.msgbox("从数据库读取相片失败!");}}elsepictureBox1.Image = null;}}。
PHP上传图片到数据库并显示的实例代码
PHP上传图⽚到数据库并显⽰的实例代码PHP上传图⽚到数据库并显⽰1、创建数据表CREATE TABLE ccs_image (id int(4) unsigned NOT NULL auto_increment,description varchar(250) default NULL,bin_data longblob,filename varchar(50) default NULL,filesize varchar(50) default NULL,filetype varchar(50) default NULL,PRIMARY KEY (id))engine=myisam DEFAULT charset=utf82、⽤于上传图⽚到服务器的页⾯ upimage.html<!doctype html><html><head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><style type="text/css">*{margin: 1%}</style><title>Document</title></head><body><form method="post" action="upimage.php" enctype="multipart/form-data">描述:<input type="text" name="form_description" size="40"><input type="hidden" name="MAX_FILE_SIZE" value="1000000"> <br>上传⽂件到数据库:<input type="file" name="form_data" size="40"><br><input type="submit" name="submit" value="submit"></form></body></html>3、处理图⽚上传的php upimage.php<?phpif (isset($_POST['submit'])) {$form_description = $_POST['form_description'];$form_data_name = $_FILES['form_data']['name'];$form_data_size = $_FILES['form_data']['size'];$form_data_type = $_FILES['form_data']['type'];$form_data = $_FILES['form_data']['tmp_name'];$dsn = 'mysql:dbname=test;host=localhost';$pdo = new PDO($dsn, 'root', 'root');$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));//echo "mysqlPicture=".$data;$result = $pdo->query("INSERT INTO ccs_image (description,bin_data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')"); if ($result) {echo "图⽚已存储到数据库";} else {echo "请求失败,请重试";注:图⽚是以⼆进制blob形式存进数据库的,像这样4、显⽰图⽚的php getimage.php<?php$id =2;// $_GET['id']; 为简洁,直接将id写上了,正常应该是通过⽤户填⼊的id获取的$dsn ='mysql:dbname=test;host=localhost';$pdo = new PDO($dsn,'root','root');$query = "select bin_data,filetype from ccs_image where id=2";$result = $pdo->query($query);$result = $result->fetchAll(2);// var_dump($result);$data = $result[0]['bin_data'];$type = $result[0]['filetype'];Header( "Content-type: $type");echo $data;5、到浏览器查看已经上传的图⽚,看是否可以显⽰以上就是本次介绍的全部相关知识点,感谢⼤家的学习和对的⽀持。
ASP上传图片到数据库图片大小有限制的解决方法
ASP上传图片到数据库图片大小有限制的解决方法(“电脑编程技巧与维护”上半月刊)我在日常工作中开发了一个网站,需要将一些图片上传到数据库,采用ASP+ACCESS方法,后台服务操作系统为WIN2003,我的上传代码如下:1、上传图片界面代码<html><head><meta name="VI60_defaultClientScript" content="VBScript"><title> File Upload </title></head><body><form name="form2" ENCTYPE="multipart/form-data" ACTION="SA VE_PIC.asp" METHOD="POST" ><br><br><br><br><table width="71%" cellpadding="0" border="1" cellspacing="0" bordercolor="#0078C8" bordercolorlight="#0078C8" bordercolordark="#FFFFFF" align="center"> <tr> <td colspan="2"><div align="center"><font size="5"><b><font color="#FF0000">在</font><font size="5" color="#FF0000"><b>下面</b></font><font color="#FF0000">添加图片</font></b></font></div> </td> </tr> <tr> <td colspan="2"><div align="center"><input type=file name=mefile>图1</div> </td></tr><tr><td colspan="2" height="27"><div align="center"><font size="5" color="#FF0000"><b>在下面添加图片</b></font></div> </td></tr> <tr> <td><div align="center">图2<input type=file name=mefile2></div> </td><td><div align="center"> 图3<input type=file name=mefile3></div> </td></tr><div align="center"><br><input type="submit" value="提交"><a href="quit.asp"> 安全退出</a></div></form><p> </p></body></html>执行后界面如下:2、SA VE_PIC.asp代码如下:<%Server.ScriptTimeOut =300%><a href="uptext.asp">添加说明</a><%dim mydata(10)response.buffer=true' 图片大小formsize=request.totalbytes'response.write formsize' 读取提交来的数据formdata=request.binaryread(formsize)bncrlf=chrB(13)&chrB(10)' 分隔符divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1) datastart = 0For i=1 To 3' 图片数据开始位置datastart=instrb(datastart+datalen+1, formdata,bncrlf&bncrlf)+4' 图片数据结束位置datalen=instrb(datastart+1,formdata,divider)-datastart' 获取图片数据mydata(i)=midb(formdata,datastart,datalen)Nextdim conndim connstron error resume nextconnstr="DBQ="+server.mappath("pic.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"set conn=server.createobject("ADODB.CONNECTION")conn.open connstrREM 增加主图片IF LEN(RTRIM(MYDA TA(1))) >2 THENsql="select * from images where imgid is null order by imgid desc"Set rs = Server.CreateObject("ADODB.Recordset")rs.Open sql,conn,3,2rs.addnewrs("img").appendchunk mydata(1) '增加到数据库中rs("bz")="Y"rs.updatesession("sl")=1REM 取得主张图片ID号sql1="select * from images order by imgid desc"Set rs1= Server.CreateObject("ADODB.Recordset")rs1.Open sql1,conn,3,2SESSION("IMGID")=rs1("imgid")ELSEEND IF%><%REM 增加第一张附图片IF LEN(RTRIM(MYDA TA(2))) >2 THENsqlstr = "select * from images where imgid is null order by imgid desc"rs.open sqlstr, conn, 3,2rs.addnewrs("img").appendchunk mydata(2)RS("BZ")="N"rs("newsid")=session("imgid")rs.updatesession("sl")=session("sl")+1ELSEEND IFREM 增加第二张附图片IF LEN(RTRIM(MYDA TA(3))) >2 THENsqlstr = "select * from images where imgid is null order by imgid desc"rs.open sqlstr, conn, 3,2rs.addnewrs("img").appendchunk mydata(3)RS("BZ")="N"rs("newsid")=session("imgid")rs.updatesession("sl")=session("sl")+1ELSEEND IFrs.closeRESPONSE.REDIRECT UPTEXT.ASP%>3、IMAGE表结构如下:IMGID 自动编号IMG OLE对象在开发的过程中,我发现上传较小的图片没有问题,但无法上传较大或多个图片,经过查找资料,我发现不是代码的问题,而是WIN2003 IIS服务默认接收的数据大小为200K,该配置存放在C:\WINDOWS\system32\inetsrv\下的metabase.xml文件中,具体解决办法如下:1、进入IIS服务管理器,在“本地计算机”单击右键,选择“属性”,如图:选中“允许直接编辑配置数据库”,确定后退出。
将图片储存在MySQL数据库中的几种方法
将图⽚储存在MySQL数据库中的⼏种⽅法通常对⽤户上传的图⽚需要保存到数据库中。
解决⽅法⼀般有两种:1、将图⽚保存的路径存储到数据库;2、将图⽚以⼆进制数据流的形式直接写⼊数据库字段中。
以下为具体⽅法:⼀、保存图⽚的上传路径到数据库: string uppath="";//⽤于保存图⽚上传路径 //获取上传图⽚的⽂件名 string fileFullname = this.FileUpload1.FileName; //获取图⽚上传的时间,以时间作为图⽚的名字可以防⽌图⽚重名 string dataName = DateTime.Now.ToString("yyyyMMddhhmmss"); //获取图⽚的⽂件名(不含扩展名) string fileName = fileFullname.Substring(stIndexOf("\\") + 1); //获取图⽚扩展名 string type = fileFullname.Substring(stIndexOf(".") + 1); //判断是否为要求的格式 if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF") { //将图⽚上传到指定路径的⽂件夹 this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type); //将路径保存到变量,将该变量的值保存到数据库相应字段即可 uppath = "~/upload/" + dataName + "." + type; }⼆、将图⽚以⼆进制数据流直接保存到数据库:引⽤如下命名空间:using System.Drawing; using System.IO; using System.Data.SqlClient; 设计数据库时,表中相应的字段类型为iamge 保存: //图⽚路径 string strPath = this.FileUpload1.PostedFile.FileName.ToString (); //读取图⽚ FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); byte[] photo = br.ReadBytes((int)fs.Length); br.Close(); fs.Close(); //存⼊ SqlConnection myConn = new SqlConnection("Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123"); string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )";//操作数据库语句根据需要修改 SqlCommand myComm = new SqlCommand(strComm, myConn); myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length); myComm.Parameters["@photoBinary"].Value = photo; myConn.Open(); if (myComm.ExecuteNonQuery() > 0) { bel1.Text = "ok"; } myConn.Close(); 读取: ...连接数据库字符串省略 mycon.Open(); SqlCommand command = new SqlCommand("select stuimage from stuInfo where stuid=107", mycon);//查询语句根据需要修改 byte[] image = (byte[])command.ExecuteScalar (); //指定从数据库读取出来的图⽚的保存路径及名字 string strPath = "~/Upload/zhangsan.JPG"; string strPhotoPath = Server.MapPath(strPath); //按上⾯的路径与名字保存图⽚⽂件 BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate)); bw.Write(image); bw.Close(); //显⽰图⽚ this.Image1.ImageUrl = strPath; //采⽤这两种⽅式可以根据实际需求灵活选择。
SQLServer数据库中如何存储图片--教程
图片文件在SQL Server数据库的存取在很多时候,我们需要将图片文件存入到SQL Server数据库中,并且在使用的时候将数据库中的图片取出。
本文将描述用C#语言来实现这一过程。
数据库表结构如果要将图片数据存入SQL Server数据库的表中,我们必须使用SQL Server的image 数据类型,在被试验中,我们将使用如下的语句创建数据库表StudentInfo:CREATE TABLE [dbo].[StudentInfo]([ID] [int] IDENTITY(1,1)NOT NULL,[Name] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[Age] [int] NULL,[Sex] [nchar](10)COLLATE Chinese_PRC_CI_AS NULL,[Class] [varchar](15)COLLATE Chinese_PRC_CI_AS NULL,[Hobby] [varchar](50)COLLATE Chinese_PRC_CI_AS NULL,[Picture] [image] NULL)其中字段Picture字段为image数据类型,用来保存学生的照片。
图片存入数据库要将图片数据存入到数据库表的image数据类型的字段中,首先需要将图片文件中的数据读入到内存字节中,在将内存字节存入数据库中,具体示例代码如下:private void btnUpload_Click(object sender, EventArgs e){//上传图片到数据库OpenFileDialog openDlg = new OpenFileDialog();openDlg.Filter = "图片文件(*.jpg)|*.jpg";string filePath = "";if (openDlg.ShowDialog() == DialogResult.OK){filePath = openDlg.FileName;this.txtFilePath.Text = filePath;this.picShow.ImageLocation = filePath;//打开文件流,用来读取图片文件中的数据FileStream stream = new FileStream(filePath,FileMode.Open,FileAccess.Read);//将文件流中的数据存入内存字节组中byte[] buffer = new byte[stream.Length];stream.Read(buffer,0,(int)stream.Length);stream.Close();try{//调用存储图片数据的存取过程string strName = Path.GetFileName(filePath);string connString = "Data Source=.;Initial Catalog=StuDB;Persist SecurityInfo=True";SqlConnection conn = new SqlConnection(connString);conn.Open();SqlCommand cmd = new SqlCommand("proc_UploadPicture", conn);mandType = CommandType.StoredProcedure;cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 1;cmd.Parameters.Add("@Picture", SqlDbType.Image).Value = buffer;cmd.Parameters.Add("@Ext", SqlDbType.VarChar).Value = strName;cmd.ExecuteNonQuery();conn.Close();}catch (Exception ex){MessageBox.Show(ex.Message);}}}存储过程proc_UploadPicture代码如下:Create procedure [dbo].[proc_UploadPicture]@ID int,@Picture imageASupdate StudentInfo set Picture = @Picturewhere ID = @ID从数据库读取图片要从数据库中获取图片数据,并将图片显示在界面上,需要将数据库中的图片数据读入到内存中,在将内存的数据用位图来格式化,并将位图显示在界面的PictureBox控件中。
图片存入mySql数据库
我在程序代码里贴了向Mysql数据库写入image代码的程序,可是好多人都是Java的初学者,对于这段代码,他们无法将它转换成jsp,所以我在这在写一下用jsp怎样向数据库写入图像文件。
大家先在数据库建这样一张表,我下面的这些代码对任何数据库都通用,只要支持blob类型的只要大家将连接数据库的参数改一下就可以了。
SQL>create table image(id int,content varchar(200),image blob);如果在sqlserver2000的数据库中,可以将blob字段换为image类型,这在SqlServer2000中是新增的。
testimage.html文件内容如下:<HTML><HEAD><TITLE>Image File </TITLE><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></HEAD><FORM METHOD=POST ACTION="testimage.jsp"><INPUT TYPE="text" NAME="content"><BR><INPUT TYPE="file" NAME="image"><BR><INPUT TYPE="submit"></FORM><BODY></BODY></HTML>我们在Form的action里定义了一个动作testimage.jsp,它的内容如下:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("org.gjt.mm.mysql.Driver").newInstance();Stringurl="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding= 8859_1";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String content=request.getParameter("content");String filename=request.getParameter("image");FileInputStream str=new FileInputStream(filename);String sql="insert into test(id,content,image) values(1,?,?)"; PreparedStatement pstmt=dbconn.conn.prepareStatement(sql);pstmt.setString(1,content);pstmt.setBinaryStream(2,str,str.available());pstmt.execute();out.println("Success,You Have Insert an Image Successfully");%>下面我写一个测试image输出的例子看我们上面程序写的对不对,testimageout.jsp的内容如下:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("org.gjt.mm.mysql.Driver").newInstance();Stringurl="jdbc:mysql://localhost/mysql?user=root&password=&useUnicode=true&characterEncoding= 8859_1";//其中mysql为你数据库的名字,user为你连接数据库的用户,password为你连接数据库用户的密码,可自己改Connection conn= DriverManager.getConnection(url);String sql = "select image from test where id=1";Statement stmt=null;ResultSet rs=null;try{stmt=conn.createStatement();rs=stmt.executeQuery(sql);}catch(SQLException e){}try {while(rs.next()) {res.setContentType("image/jpeg");ServletOutputStream sout = response.getOutputStream();InputStream in = rs.getBinaryStream(1);byte b[] = new byte[0x7a120];for(int i = in.read(b); i != -1;){sout.write(b);in.read(b);}sout.flush();sout.close();}}catch(Exception e){System.out.println(e);}%></body></html>你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。
如何将图片保存到SqlServer、Oracle、Access数据库中。-懒猫星空--...
如何将图片保存到SqlServer、Oracle、Access数据库中。
-懒猫星空--...如何将图片保存到SqlServer、Oracle、Access数据库中。
首先,我们要明白图片是以二进制的形式保存在数据库中的,那么把图片保存到数据库中的步骤大体上有这几步1.将图片转换为二进制数组(byte[]);2.把转换后的二进制数组(byte[])作为参数传递给要执行的Command;3.执行Command;首先,如何把图片转换成byte[],如果你使用的是2.0,那么你可以使用FileUpLoad控件来实现byte[] fileData = this.FileUpload1.FileBytes;如果你用的是1.1或者你在创建WinForm那么你可以使用下面的方法来把图片转换为byte[] public byte[] getBytes(string filePath){System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);byte[] imgData = new byte[fs.Length];fs.Read(imgData, 0, (int)fs.Length);return imgData;}1.SqlServer数据库。
SqlServer有Image字段类型,最大可以存储2G的数据。
byte[] fileData = this.FileUpload1.FileBytes;string sql = "insert into t_img(img) values (@img)";string strconn = System.Configuration.ConfigurationManager.ConnectionStrings[ "fengdongDB"].T oString();SqlConnection sqlConn = new SqlConnection(strconn);SqlCommand sqlComm = new SqlCommand(sql, sqlConn);sqlComm.Parameters.Add("@img", SqlDbType.Image);//添加参数sqlComm.Parameters["@img"].Value = fileData;//为参数赋值sqlConn.Open();sqlComm.ExecuteNonQuery();sqlConn.Close();2.Oracle数据库。
关于图片或者文件在数据库的存储方式归纳
关于图⽚或者⽂件在数据库的存储⽅式归纳据我了解,互联⽹环境中,⼤访问量,数据库速度和性能⽅⾯很重要。
⼀般在数据库存储图⽚的做法⽐较少,更多的是将图⽚路径存储在数据库中,展⽰图⽚的时候只需要连接磁盘路径把图⽚载⼊进来即可。
因为图⽚是属于⼤字段。
⼀张图⽚可能1m到⼏m。
有个原则:图⽚尽量不要存储在数据库中(是指不要⼆进制形式保存到字段,⽽只保存图⽚的路径)。
这样的⼤字段数据会加重数据库的负担,拖慢数据库。
在⼤并发访问的情况下很重要。
这是⼀个经验。
去看看dba对数据库性能调优⽅⾯的分析都能得到这个答案的:就是图⽚不要存储在数据库中。
⼆、数据库中保存图⽚路径⼀般是这样⼦的:按照年⽉⽇⽣成路径。
具体是按照年⽉⽇还是按照年⽉去⽣成路径,根据⾃⼰需要(不⼀定是按照⽇期去⽣成)。
理解为什么要分散到多个⽂件夹中去才是关键,涉及到⼀个原理就明⽩了:操作系统对单个⽬录的⽂件数量是有限制的。
当⽂件数量很多的时候。
从⽬录中获取⽂件的速度就会越来越慢。
所以为了保持速度,才要按照固定规则去分散到多个⽬录中去。
图⽚分散到磁盘路径中去。
数据库字段中保存的是类似于这样⼦的”images/2012/09/25/ 1343287394783.jpg”原来上传的图⽚⽂件名称会重新命名保存,⽐如按照时间戳来⽣成,1343287394783. jpg。
这样⼦是为了避免⽂件名重复,多个⼈往同⼀个⽬录上传图⽚的时候会出现。
反正⽤什么样的规则命名图⽚,只要做到图⽚名称的唯⼀性即可。
⽐如⽹站的并发访问量⼤,⽬录的⽣成分得⽉细越好。
⽐如精确到⼩时,⼀个⼩时都可以是⼀个⽂件夹。
同时0.001秒有两个⽤户同时在上传图⽚(因为那么就会往同⼀个⼩时⽂件夹⾥⾯存图⽚)。
因为时间戳是精确到秒的。
为了做到图⽚名称唯⼀性⽽不⾄于覆盖,⽣成可以在在时间戳后⾯继续加毫秒微秒等。
总结的规律是,并发访问量越⼤。
就越精确就好了。
我现在还没碰到需要这么精细的。
概率⽐较少。
有个⽅⾯总结⼀下:为什么保存的磁盘路径,是”images/2012/09/25/1343287394783.jpg”,⽽不是” /images/2012/09/25/ 1343287394783.jpg”(最前⾯带有斜杠)我的理解:连那个斜杠都不要。
介绍如何将图片存入数据库
本实例主要介绍如何将图片存入数据库。
将图片存入数据库,首先要在数据库中建立一张表,将存储图片的字段类型设为Image类型,用FileStream类、BinaryReader把图片读成字节的形式,赋给一个字节数组,然后用ADO.SqlCommand对象的ExecuteNonQuery()方法来把数据保存到数据库中。
主要代码如下:private void button1_Click(object sender, EventArgs e){openFileDialog1.Filter = "*jpg|*.JPG|*.GIF|*.GIF|*.BMP|*.BMP";if(openFileDialog1.ShowDialog()==DialogResult.OK){string fullpath =openFileDialog1.FileName;//文件路径FileStream fs = new FileStream(fullpath, FileMode.Open);byte[] imagebytes =new byte[fs.Length];BinaryReader br = new BinaryReader(fs);imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//打开数据库SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");con.Open();SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);com.Parameters.Add("ImageList", SqlDbType.Image);com.Parameters["ImageList"].Value = imagebytes;com.ExecuteNonQuery();con.Close();}}本实例主要介绍如何从数据库中把图片读出来。
如何上传图片(数据库形式)
如何上传图片(数据库形式)第一步、创建数据表用Access建立一个名为db.mdb的数据库文件,创建名为photo的数据表,建立id和img两个字段,设置id 为主键,格式为自动编号,img的格式为OLE对象,如下图所示:第二步、创建上传图片的主页面创建名为main.asp的文件<html><head><title>上传图片首页</title></head><SCRIPT language="javascript">function mysubmit(theform){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);}}return (true);}</SCRIPT><body><form action="up.asp" method="post" name="form" onsubmit="return mysubmit(this)" enctype="multipart/form-data" ><p align="center"><div align="center"><input type="file" name="file"></div></p><p align="center"><input type="submit" name="submit" value="上传..."><a href="show.asp"><font size="2">显示图片</font></a></p></form></body></html>第三步、创建连接文件创建名为conn.asp的连接文件<%option explicitDim connDim DBPathSet conn = Server.CreateObject("ADODB.Connection")DBPath = Server.MapPath("db.mdb")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath%>第四步、创建上传图片的传递文件创建名为up.asp的传递文件<!--#include file="conn.asp"--><%dim rs,sqlset rs=server.CreateObject("ADODB.Recordset")sql="select * from photo"rs.open sql,conn,3,2dim formsize,formdata,bncrlf,divider,datastart,dataend,mydataformsize=request.totalbytesformdata=request.binaryread(formsize)bncrlf=chrB(13) & chrB(10)divider=leftB(formdata,clng(instrb(formdata,bncrlf))-1)datastart=instrb(formdata,bncrlf & bncrlf)+4dataend=instrb(datastart+1,formdata,divider)-datastartmydata=midb(formdata,datastart,dataend)rs.addnewrs("img").appendchunk=mydatars.updaters.close'释放对象以及重新定向到main.asp页面set rs=nothingset conn=nothingresponse.write"<SCRIPT>alert('图片上传成功!');location.href='main.asp'</SCRIPT>"%>第五步、创建显示数据库中上传图片id的文件创建名为show.asp的文件<!--#include file="conn.asp"--><%dim rs,sqlset rs=server.CreateObject("ADODB.Recordset")sql="select * from photo"rs.open sql,conn,1,1%><html><SCRIPT language="javascript">function ConfirmDel(){if(confirm("确定要删除此记录吗?"))return true;elsereturn false;}</SCRIPT><table width="300" border="0" align="center"><tr><td bgcolor="#CCCCCC" colspan=2><div align="center"><font color="#000000" size="3" face="黑体">图片显示列表</font></div> </td></tr><% do while not(rs.eof) %><tr><td bgcolor="#E6E6E6" width=200 align=center><a href='showpic.asp?id=<%=rs("id")%>'>图片<%=rs("id")%></a></td><td bgcolor="#E6E6E6" width=150 align=center><a href='delpic.asp?id=<%=rs("id")%>' onClick='return ConfirmDel()'>删除</a></td></tr><%rs.movenextlooprs.close%></table></html><%'释放对象set rs=nothingset conn=nothing%>第六步、创建显示图片的文件创建名为showpic.asp的文件<!--#include file="conn.asp"--><%dim rs,sql'取得参数iddim idid=request("id")set rs=server.CreateObject("ADODB.Recordset")sql="select * from photo where id=" &idrs.open sql,conn,1,1'显示图片Response.ContentType = "image/jpeg"Response.BinaryWrite rs("img")rs.close'释放对象set rs=nothingset conn=nothing%>第七步、创建删除图片的文件为了完善程序,创建名为delpic.asp的文件来删除不需要的文件<!--#include file="conn.asp"--><%Dim idDim delsqlid=Request.QueryString("id")delsql="delete * from photo where id="&idconn.execute(delsql)%><SCRIPT language="vbscript">alert("此图片已经删除!")window.location.href="show.asp"</SCRIPT>下面是显示效果图:如果未选择图片,则弹出错误信息如果上传的不是(.gif)格式的文件或(.jpg)格式的文件,则弹出错误信息当选择正确后点击上传按钮,则上传成功后弹出上传成功信息,并且返回到上传主页面点击显示图片,如下图所示:查看图片,则点击图片1、图片2……点击删除,则弹出是否确定删除确认信息如果点击取消按钮,则不执行删除,若点击确定,则删除所选图片id的图片,并弹出删除成功信息,如下图所示:。
c#读取图像保存到数据库中(数据库保存图片)
MemoryStream ms = new MemoryStream (); picPhoto.Image.Save (ms, System.Drawing.Imaging.ImageFormat.Bmp); byte [] myData = new Byte [ms.Length ]; ms.Position = 0; ms.Read (myData,0,Convert.ToInt32 (ms.Length )); m_DataRow[MyTools.g_PhotoField] = myxception ee) { MessageBox.Show(ee.Message); } }//else
//读取图象 if(this.m_DataRow[MyTools.g_PhotoField]!=DBNull.Value) { try { Byte[] byteBLOBData = new Byte[0]; byteBLOBData = (Byte[])m_DataRow[MyTools.g_PhotoField]; MemoryStream stmBLOBData = new MemoryStream(byteBLOBData); this.picPhoto.Image= Image.FromStream(stmBLOBData); } catch(Exception ex) { MessageBox.Show(ex.Message); } } else { this.picPhoto.Image= null; }
这篇文章详细探讨了c中的委托列举其主要的实现方式并分析其在设计层面和编码层面带来的好处最后会讨论其安全性和执行效率等当然还有实现示例
用JSP实现将图片存入数据库或从数据库中取出
数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示。
通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息。
但是,如果我们想动态的显示图片,上述方法就不能满足需要了。
我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片。
实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示。
2、建立后台数据库假定处理的是图片新闻,那么我们可以建立相应的数据库及数据表对象。
我们要存取的数据表结构的SQL脚本如下所示:if exists (select * from dbo.sysobjects where id =object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[picturenews]GOCREATE TABLE [dbo].[picturenews] ([id] [int] IDENTITY (1, 1) NOT NULL ,[image] [image] NULL ,[content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,[detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO表picturenews中,字段id作为标识,每存储一行数据,自动增加1。
字段image 用于存储图片信息,其数据类型为“image”。
3、向数据库存储二进制图片启动Dreamweaver MX后,新建一个JSP文件。
其代码如下所示。
<%@ page contentType="text/html;charset=gb2312"%><HTML><HEAD><TITLE>存储图片</TITLE></HEAD><body><!-- 下面的窗体将以Post方法,将数据传递给testimage.jsp文件 --><FORM METHOD=POST ACTION="testimage.jsp">新闻标题:<INPUT TYPE="text" NAME="content"><BR>新闻图片:<INPUT TYPE="file" NAME="image"><BR>新闻内容:<TEXTAREA name="txtmail" rows="15" cols="90"style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt;HEIGHT: 200px; WIDTH: 100%" wrap="physical" ></TEXTAREA><br><INPUT TYPE="submit"></form></HTML>将此文件保存为InputImage.jsp文件,其中testimage.jsp文件是用来将图片数据存入数据库的,具体代码如下所示:<%@ page contentType="text/html;charset=gb2312"%><%@ page import="java.sql.*" %><%@ page import="java.util.*"%><%@ page import="java.text.*"%><%@ page import="java.io.*"%><html><body><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//加载驱动程序类Connectioncon=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");//建立数据库联机,其中denglu为数据库名,sa为连接数据库的帐号及密码。
图片保存、保管措施
图片保存、保管措施
本文旨在向您介绍一些有效的图片保存和保管措施,以确保图片的安全和可持续性。
1. 使用云存储
使用云存储是一种安全、可靠的方式来保存和保管图片。
云存储提供商可以为您提供大量的存储空间,并确保您的图片在服务器上得到安全保存。
同时,云存储也具备自动备份的功能,以防止数据丢失。
2. 文件命名规范
为了便于管理和查找,建议对图片文件进行规范的命名。
可以根据具体内容、日期、地点等要素为图片命名,确保每个文件名都是唯一的。
3. 建立文件夹结构
将图片组织到不同的文件夹中也是一种好的保管措施。
可以按照项目、时间周期、主题等分类创建文件夹,使图片更易于查找和管理。
4. 定期备份
定期备份图片是确保图片安全的重要环节。
定期将图片复制到外部存储设备(如硬盘、U盘等)或其他云存储服务上,以防止意外数据丢失。
5. 确保网络安全
在上传或传输图片时,应确保网络的安全性。
使用安全的Wi-Fi网络,并采取必要的安全措施,例如使用加密连接和防火墙来保护图片传输过程中的安全。
6. 控制访问权限
如果您希望在共享图片时保持一定的隐私和安全性,可以通过设置访问权限来控制谁可以查看或编辑您的图片。
这可以防止未经授权的访问和滥用。
7. 定期整理和清理
定期整理和清理图片库是保持图片保存和保管有序的关键。
删除不再需要的重复图片或低质量图片,以减少存储空间的占用,并保持整个图片库的可持续性。
希望以上建议能够帮助您有效地保存和保管图片,确保图片的安全和可访问性。
如果有任何问题或需要进一步的帮助,请随时与我们联系。
如何在数据库中保存大量图片
如何在数据库中保存大量图片作者: 刘师义上海盟威软件有限公司软件开发工程师时间: 2010/6/1来源: 上海盟威软件有限公司()。
公司拥有以微软最有价值专家为核心的技术团队,专业从事Aaccess开发培训,学员可非脱产方式参加培训,自由安排学习时间,并通过网络获得公司的技术支持,几年来已为全国各地大中型企事业单位培养了众多“精管理、懂编程”的复合型人才,详情了解:/training.asp。
一、摘要:我们将图片保存到数据库中,使用维护起来都变得很简单尤其适用于小型便携式的Access管理系统。
但如果直接通过绑定对象框控件的插入对象方法将图片插入的话,非位图图片体积会暴增几十上百倍,从而大大降低了实用性。
在本文中,讲述了如何将图片以原始大小保存到数据库中进行使用的方法。
二、正文:一般情况下,如果要将图片保存到数据库中,都是通过绑定对象框的“插入对象”功能来实现,但是这样做会造成数据库体积的明显增大。
尤其是在Access 2007之前的版本中所有插入的图上均会被转换成位图,而如果把一个JPG图片转换成位图,我们会发现图片的大小增大了几十上百倍。
那么有没有一种办法能够直接把保存源格式的图片到数据库中呢?答案是肯定的,答案就在ADO中的流对象(Stream)。
此处要注意的是,ADO必须是2.5以及更新的版本,老版本中是没有流对象的。
流对象主要有两种用途:一种是处理文档数据,这样可以通过流对象的属性和方法来读取和修改文档内容;另一种就是把其它任意格式的文件以二进制数据流进行处理,不关心文件的格式和内容。
在本文中我们讨论的是在数据库中存储图片,所以我们这里主要讨论的就是它的后一种用途。
为了更容易理解,我们在此基于一个示例程序来进行说明。
首先我们需要在表中添加至少两个字段,一个用来存放图片的名称,一个用来存放图片的二进制文件数据:然后我们基于此表来创建窗体,通过窗体实现图片的保存以及将保存的图片显示出来。
在此窗体中我们需要手动添加三个控件:图像控件:名称:imgPic 图片类型:链接按钮控件:名称:cmdAdd 标题:添加/更改图片单击事件:[事件过程]按钮控件:名称:cmdDel 标题:删除图片单击事件:[事件过程]由于相关的记录修改添加都是通过代码完成,所以我们需要将“图片名称”的“锁定”属性设为“是”,另外图片数据是一个绑定对象框控件,它只用来存放图片文件数据,不需要显示出来,所以我们要将其“可见性”属性设为“否”。
如何把图片以二进制方式存入SQL Server数据库,并能读取出来
1、建所需数据库和表,语句如下:--建立数据库create database test--使用该数据库use test--建立存放图片的表create table piclist(id int Identity primary key,pic Image not null)2、制作上传图片的模块,代码如下:前台html代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpPhoto.aspx.cs" Inherits="Test_UpPhoto" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>无标题页</title></head><body><form id="form1" runat="server"><div><input id="UpPhoto" name="UpPhoto" runat="server" type="file" /><asp:Button id="btnAdd" runat="server" Text="上传" OnClick="btnAdd_Click"></asp:Button> </div></form></body></html>后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;using System.Data.SqlClient;public partial class Test_UpPhoto : System.Web.UI.Pageprotected void Page_Load(object sender, EventArgs e){}protected void btnAdd_Click(object sender, EventArgs e){//获得图象并把图象转换为byte[]HttpPostedFile upPhoto = UpPhoto.PostedFile;int upPhotoLength = upPhoto.ContentLength;byte[] PhotoArray = new Byte[upPhotoLength];Stream PhotoStream = upPhoto.InputStream;PhotoStream.Read(PhotoArray, 0, upPhotoLength);//连接数据库string ConStr = "server=(local);user id=sa;pwd=sa;database=test";SqlConnection conn = new SqlConnection(ConStr);string strSql = "Insert into piclist(pic) values(@pic)";SqlCommand cmd = new SqlCommand(strSql, conn);cmd.Parameters.Add("@pic", SqlDbType.Image);cmd.Parameters["@pic"].Value = PhotoArray;conn.Open();cmd.ExecuteNonQuery();conn.Close();Response.Write("图片上传成功");}}3、制作显示图片的模块(单独显示图片,即没用到datalist):后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;using System.IO;public partial class Test_ShowPhoto : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){if(!Page.IsPostBack){//连接数据库string ConnStr = "server=(local);user id=sa;pwd=sa;database=test";string strSql = "select * from piclist";SqlConnection conn = new SqlConnection(ConnStr);conn.Open();SqlCommand cmd=new SqlCommand(strSql,conn);SqlDataReader reader = cmd.ExecuteReader();while (reader.Read()){Response.ContentType = "application/octet-stream";Response.BinaryWrite((Byte[])reader["pic"]);Response.Write("successful");}reader.Close();conn.Close();Response.End();}}}补充步骤3,用datalist显示图片方法:建立两个 页面,名称为piclist.aspx和StreamImg.aspx。
varbinary用法
varbinary用法在计算机科学和数据库领域,varbinary是一种数据类型,用于存储二进制数据。
本文将介绍varbinary的用法及其在实际应用中的一些例子。
一、varbinary的定义和特点varbinary是一种可变长度的二进制数据类型,在许多数据库管理系统中都有支持。
它允许存储任意长度的二进制数据,包括图像、音频、视频等。
varbinary的特点包括:1. 可变长度:varbinary字段的长度可以动态调整,根据实际存储的数据长度进行分配。
这使得存储效率更高,节约了存储空间。
2. 二进制数据存储:varbinary字段用于存储二进制数据,不区分数据类型。
它只关心数据的字节流,而不会对数据进行解析或转换。
二、varbinary的用法varbinary常用于以下场景:1. 存储多媒体数据:由于多媒体文件通常较大,使用varbinary类型可以有效地存储和读取这些文件。
比如,在一个博客平台中,可以使用varbinary类型存储用户上传的图片文件。
2. 存储加密数据:在一些需要加密存储的场景中,可以使用varbinary类型存储经过加密的数据。
例如,存储用户密码时,可以先对密码进行加密,然后将加密后的字节流存储为varbinary。
3. 存储二进制文件:如存储可执行文件、压缩文件等。
在一些应用程序中,可能需要将二进制文件存储在数据库中,方便管理和备份。
三、varbinary的示例下面是一些使用varbinary的实际例子,以帮助更好地理解其用法:1. 存储图片数据:假设有一个名为image_table的数据库表,其中包含一个varbinary 字段用于存储图片数据。
可以使用如下的SQL语句将图片文件存储到数据库中:```sqlINSERT INTO image_table (image_data) VALUES(CONVERT(varbinary, '图片文件内容'));```'图片文件内容'可以替换为实际的图片字节流。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这个范例共包括三个ASP文件和一个数据库(一个表),全部在同一目录下。
1、tblImage 表结构(ACCESS 2000)sn 自动编号序列号content-type 文本图片类型image OLE 对象图片数据2、SimpleImageToData.asp:上传表单及保存图片到数据库的代码部分,主要文件。
<%@ Language=VBScript %><% option explicit %><%'从一个完整路径中析出文件名称function getFileNamefromPath(strPath)getFileNamefromPath = mid(strPath,instrrev(strPath,"\")+1)end function'定义数据库连接字符串dim cnstrcnstr = "driver={Microsoft Access Driver (*.mdb)};dbq=" &server.MapPath("./upload.mdb")%><HTML><HEAD><title>单个图像保存到数据库</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </HEAD><body><p><a href="SimpleImageToData.asp">上传图片</a><a href="ShowImageListFromData.asp">显示图片</a><hr></p><%if request.ServerVariables("REQUEST_METHOD") = "POST" thendim sCome, sGo, binData, strDatadim posB, posE, posSB, posSEdim binCrlfdim strPath, strFileName, strContentTypebinCrlf = chrb(13)&chrb(10) '定义一个单字节的回车换行符set sCome = server.CreateObject("adodb.stream")sCome.Type = 1 '指定返回数据类型 adTypeBinary=1,adTypeText=2sCome.Mode = 3 '指定打开模式adModeRead=1,adModeWrite=2,adModeReadWrite=3sCome.OpensCome.Write request.BinaryRead(request.TotalBytes)sCome.Position = 0binData = sCome.Read'response.BinaryWrite binData '调试用:显示提交的所有数据'response.Write "<hr>" '调试用set sGo = server.CreateObject("adodb.stream")sGo.Type = 1sGo.Mode = 3sGo.OpenposB = 1posB = instrb(posB,binData,binCrlf)posE = instrb(posB+1,binData,binCrlf)'response.Write posB & " | " & posE & "<br>"sCome.Position = posB+1sCome.CopyTo sGo,posE-posB-2sGo.Position = 0sGo.Type = 2sGo.Charset = "gb2312"strData = sGo.ReadTextsGo.Close'response.Write strData & "<hr>"posSB = 1posSB = instr(posSB,strData,"filename=""") + len("filename=""")posSE = instr(posSB,strData,"""")if posSE > posSB thenstrPath = mid(strData,posSB,posSE-posSB)'response.Write "本地路径:" & strPath & "<br>"'response.Write "文件名:" & getFileNamefromPath(strPath) & "<br>"posB = posEposE = instrb(posB+1,binData,binCrlf)'response.Write posB & " | " & posE & "<br>"sGo.Type = 1sGo.Mode = 3sGo.OpensCome.Position = posBsCome.CopyTo sGo,posE-posB-1sGo.Position = 0sGo.Type = 2sGo.Charset = "gb2312"strData = sGo.ReadTextsGo.ClosestrContentType = mid(strData,16) '此处因为固定的,所以省略查找 :-) 'response.Write "图片类型:" & strContentType & "<hr>"posB = posE+2posE = instrb(posB+1,binData,binCrlf)'response.Write posB & " | " & posE & "<br>"sGo.Type = 1sGo.Mode = 3sGo.OpensCome.Position = posB+1sCome.CopyTo sGo,posE-posB-2sGo.Position = 0strData = sGo.ReadsGo.Close'response.Write lenb(strData) & "<br>"dim cn, rs, sqlset cn = server.CreateObject("adodb.connection")cn.Open cnstrset rs = server.CreateObject("adodb.recordset")sql = "select * from tblImage"rs.Open sql,cn,1,3rs.AddNewrs.Fields("content-type").Value = strContentTypers.Fields("image").AppendChunk strDatars.Updaters.Closeset rs = nothingcn.Closeset cn = nothingresponse.Write "图片保存成功!" & "<br>"elseresponse.Write "没有上传图片!" & "<br>"end ifset sGo = nothingsCome.Closeset sCome = nothingelse%><form id="frmUpload" name="frmUpload" action="SimpleImageToData.asp" method="post" target="_self" enctype="multipart/form-data"><INPUT id="filImage" type="file" name="filImage" size="40"><BR><INPUT id="btnUpload" type="submit" value="Upload" name="btnUpload"> </form><%end if%></body></HTML>3、ShowImageListFromData.asp<%@ Language=VBScript %><% option explicit %><html><head><title>显示数据库中已有图片的列表</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head><body><p><a href="SimpleImageToData.asp">上传图片</a><a href="ShowImageListFromData.asp">显示图片</a><hr></p><table border=0 cellpadding=2 cellspacing=2><tr><td valign=top><%dim cnstrcnstr = "driver={Microsoft Access Driver (*.mdb)};dbq=" &server.MapPath("./upload.mdb")dim cn, sql, rsset cn = server.CreateObject("adodb.connection")cn.Open cnstrsql = "select sn,[content-type],image from tblImage"set rs = cn.Execute(sql)response.Write "<table border=1 cellspacing=2 cellpadding=5>"response.Write "<tr>"response.Write "<th>序列号</th><th>图片类型</th><th>图片</th>"response.Write "</tr>"do until rs.eofresponse.Write "<tr>"response.Write "<td>" & rs("sn") & "</td>"response.Write "<td>" & rs("content-type") & "</td>"response.Write "<td><a href='ShowImageListFromData.asp?sn=" &rs("sn") & "'>看图</a></td>"response.Write "</tr>"rs.movenextloopresponse.Write "</table>"cn.Closeset cn = nothing%></td><td valign=top><%dim snsn = request.QueryString("sn")if sn = "" thenresponse.Write "没有指定图片!"elseresponse.Write "<img border=1 src=ShowImageFromData.asp?sn=" & sn & ">"end if%></td></tr></table></body></html>4、ShowImageFromData.asp<%@ Language=VBScript %><% option explicit %><%dim snsn = request.QueryString("sn")if sn = "" then response.Enddim cnstrcnstr = "driver={Microsoft Access Driver (*.mdb)};dbq=" &server.MapPath("./upload.mdb")dim cn, sql, rsset cn = server.CreateObject("adodb.connection")cn.Open cnstrsql = "select sn,[content-type],image from tblImage where sn=" & cint(sn) set rs = cn.Execute(sql)response.ContentType = rs("content-type")response.BinaryWrite rs("image")set rs = nothingcn.Closeset cn = nothing%>。