如何将图片存入数据库
如何将图片插入到数据库中
试验十数据库编程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”。
图片上传至数据库然后显示在页面
前几天有同学在做用户注册的时候问到,怎么上传头像呢,然后在页面如何显示头像呢?所以在这里做了个小例子,和大家分享一下,希望对大家有所帮助!
学习交流QQ:1134135987
首先我用的开发工具是:Myeclipse10.0,数据库用的是Oracle10g,做的这个小例子的功能是:上传图片到数据库,然后显示到页面,比较简单,没有用Servlet,用的是Struts2。
下面是具体步骤和完整源代码:
首先我的项目名是Image_Up_Show_Test,项目结构是:
控制的,但是在这里还是共享一下吧)的源代码为:
OK了,所有源代码全部贴上来了,现在把项目部署好,然后打开浏览器,输入:
http://localhost:8080/Image_Up_Show_Test
然后回车,就会进入到如下页面:
然后点击“上传”按钮,会出现如下页面:
到这里就OK啦。
需要说明的一点是:
我保存到数据中图片的名称不是图片的原名称,而是统一重命名,以当前系统时间命名,然后存入数据库中,存进去的只是一个名称,图片是保存在服务器下的指定文件夹中,取的时候通过src去指定目录找就OK了。
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、到浏览器查看已经上传的图⽚,看是否可以显⽰以上就是本次介绍的全部相关知识点,感谢⼤家的学习和对的⽀持。
存储过程_将图片存入数据库
一、写一个存储过程,将图片存入数据库中基本情况介绍:数据库版本:oracle 11g数据库用户:scott数据库密码:tigerJDK:1.6要导入的图片:D:\picture\1.jpg--创建存储图片的表CREATE TABLE IMAGE_LOB (T_ID V ARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);--创建存储图片的目录CREATE OR REPLACE DIRECTORY IMAGES AS 'D:\picture';存储过程如下:CREATE OR REPLACE PROCEDURE IMG_INSERT (TID V ARCHAR2,FILENAME V ARCHAR2) ASF_LOB BFILE;--文件类型B_LOB BLOB;BEGINiNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)V ALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;--插入空的blobF_LOB:= BFILENAME ('IMAGES', FILENAME);--获取指定目录下的文件DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONL Y);--以只读的方式打开文件DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB));--传递对象DBMS_LOB.FILECLOSE (F_LOB);--关闭原始文件COMMIT;END;--将该图片存入表call IMG_INSERT('1','1.gif'); 验证一下是否已存入:二、从数据库读取图片并显示在页面上项目名称为ShowPhoto启动Tomcat,在浏览器输入:http://localhost:8080/ShowPhoto/,显示如下:。
海量图片的存储方案
海量图片的存储方案介绍在当今数字化时代,海量图片数据的存储成为了一个非常重要的问题。
无论是个人用户还是企业机构,在处理海量图片数据时都需要一个高效且可靠的存储方案。
本文将介绍几种常见的海量图片的存储方案,并对其进行比较和评估。
单机存储方案单机存储是最简单的存储方案之一。
它基于一台单独的计算机,通过硬盘进行数据存储。
单机存储方案的优点是成本低,易于维护和操作。
然而,由于硬盘容量有限,单机存储方案无法满足海量图片数据的存储需求。
分布式存储方案为了解决单机存储方案的容量限制问题,分布式存储方案应运而生。
它将图片数据分散存储在多台计算机上,通过网络进行协同工作。
分布式存储方案的优点是可以通过增加机器数量来扩展存储容量,能够处理大规模的海量图片数据。
然而,分布式存储方案也存在着一些挑战,例如数据冗余、数据一致性和网络通信性能等问题。
基于Hadoop的存储方案Hadoop是一个开源的分布式存储和计算框架,被广泛用于处理大规模数据。
在海量图片存储方案中,Hadoop可以作为底层存储系统。
Hadoop分布式文件系统(HDFS)提供了高容量、高可靠性和高性能的存储。
可以使用Hadoop的MapReduce功能进行数据处理和分析。
基于Ceph的存储方案Ceph是一个可扩展的分布式存储系统,可用于构建高性能和高可靠性的存储解决方案。
Ceph采用对象存储模型,将图片数据存储为对象,并在多个节点之间进行复制和分布。
Ceph具有自动数据修复、故障转移和均衡负载等功能,可以有效地处理海量图片数据。
云存储方案随着云计算技术的发展,云存储方案越来越受欢迎。
云存储将图片数据存储在云服务提供商的服务器上,用户可以通过网络访问和管理数据。
云存储的优点包括可扩展性、弹性和高可用性。
用户可以根据自己的需求灵活地调整存储容量,并获得高可靠性的数据存储和备份。
基于Amazon S3的存储方案Amazon Simple Storage Service(S3)是一种高度可扩展的云对象存储服务,适用于存储和检索海量图片数据。
将图片储存在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();}}本实例主要介绍如何从数据库中把图片读出来。
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. 批量插入:这是最常见的方法,可以通过构建一个SQL语句,将多条记录一次性插入到数据库中。
2. 使用存储过程:可以将多个操作封装成一个过程,提高数据导入的效率。
3. 使用数据导入工具:例如使用Excel或其他格式的文件导入到数据库中,这可以帮助用户快速地完成数据导入。
4. 使用LOAD DATA语句:例如在MySQL中,可以使用LOAD DATA命令快速导入大规模数据。
这个命令可以从文本文件中导入数据到数据库中,能够比单独执行INSERT命令更快。
请注意,上述方法的选择取决于数据库类型、数据量大小、网络状况以及系统资源等多种因素。
在实际操作中,建议根据具体情况选择最合适的方法。
如何在数据库中保存大量图片
如何在数据库中保存大量图片作者: 刘师义上海盟威软件有限公司软件开发工程师时间: 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。
C#中RichEdit控件,保存文本和图片到mysql数据库
C#中RichEdit控件,保存⽂本和图⽚到mysql数据库分别通过内存流和RTF⽂件保存,个⼈感觉是较为完善的两种⽅法,希望⼤家可以⽤得到,有什么技术分享,欢迎下⾯留⾔⽅法1://建⽴内存流MemoryStream ms = new MemoryStream();//ms.Position = 0;//把当前的richtextbox内容包括图⽚和⽂本保存到流中richTextBox1.SaveFile(ms, RichTextBoxStreamType.RichText);byte[] buffer = ms.GetBuffer();// MySqlConnectStringMySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString);string insertStr = "insert into httang_test.hxwang_richedit(image) values(@blobData);";//需要主键设置⾃增MySqlParameter par = new MySqlParameter("@blobData", MySqlDbType.Blob);par.Value = buffer;MySqlCommand cmd = new MySqlCommand(insertStr, conn);cmd.Parameters.Add(par);try{conn.Open();cmd.ExecuteNonQuery();ms.Close();ms.Dispose();}catch (Exception ep){MessageBox.Show(ep.Message);}richTextBox1.Clear();MessageBox.Show("成功插⼊数据库!");}⽅法2:if ((Path.GetExtension("D:\\text")).ToLower() == ".rtf")richTextBox1.SaveFile("D:\\text", RichTextBoxStreamType.RichNoOleObjs);elserichTextBox1.SaveFile("D:\\text");FileStream fs = new FileStream("D:\\text", FileMode.Open);BinaryReader br = new BinaryReader(fs);byte[] byData = br.ReadBytes((int)fs.Length);//byte[] buffer = ms.GetBuffer();//// MySqlConnectStringMySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString);string insertStr = "insert into httang_test.hxwang_richedit(image) values(@blobData);";//需要主键设置⾃增MySqlParameter par = new MySqlParameter("@blobData", MySqlDbType.Blob);par.Value = byData;MySqlCommand cmd = new MySqlCommand(insertStr, conn);cmd.Parameters.Add(par);try{conn.Open();cmd.ExecuteNonQuery();fs.Close();fs.Dispose();}catch (Exception ep){MessageBox.Show(ep.Message);}richTextBox1.Clear();MessageBox.Show("成功插⼊数据库!");} }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
protected TextBox txtDescription;
protected Label txtMessage;
protected Int32 FileLength = 0; //记录文件长度变量
protected void Button_Submit(System.Object sender, System.EventArgs e) {
SqlCommand com = new SqlCommand("insert into tb_08 values(@ImageList)",con);
com.Parameters.Add("ImageList", SqlDbType.Image);
[ImageSize] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
*/
//UpLoadImage.aspx程序内容如下:
<%@ Page Inherits="UploadImage.UploadImage" SRC="UpLoadImage.cs"
,ImageContentType Column为图象文件类型记录字段,ImageDescription Column为储蓄图
象文件说明字段,ImageSize Column为储存图象文件长度字段,结构如下:
CREATE TABLE [dbo].[ImageStore] (
[ImageID] [int] IDENTITY (1, 1) NOT NULL ,
com.Clone();
con.Close();
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
{
byte[] imagebytes = null;
//打开数据库
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
byte[] imagebytes =new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));
cellspacing="0" border="0">
<TR>
<TD>上传图片(选择你要上传的图片)</TD>
<TD>
<INPUT TYPE="file" ID="UP_FILE" RUNAT="server" STYLE="Width:320"
ACCEPT="text/*" NAME="UP_FILE">
{ //文件长度为零时
txtMessage.Text = "<b>请你选择你要上传的文件</b>";
}
else
{
Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组
//打开数据库
SqlConnection con = new SqlConnection("server=(local);uid=sa;pwd=;database=db_05");
con.Open();
using System;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
</TD>
</TR>
<TR>
<TD>
文件说明(添加上传图片说明,如:作者、出处)
</TD>
<TD>
<asp:TextBox RUNAT="server" WIDTH="239" ID="txtDescription"
MAINTAINSTATE="false" />
Stream StreamObject = UpFile.InputStream; //建立数据流对像
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
con.Open();
SqlCommand com = new SqlCommand("select top 1* from tb_09", con);
SqlDataReader dr = com.ExecuteReader();
Language="C#"%>
<HTML><title>上传图片</title>
<BODY bgcolor="#FFFFFF">
<FORM ENCTYPE="multipart/form-data" RUNAT="server" ID="Form1">
<TABLE RUNAT="server" WIDTH="700" ALIGN="left" ID="Table1" cellpadding="0"
</TD>
</TR>
<TR>
<TD>
<asp:Label RUNAT="server" ID="txtMessage" FORECOLOR="red"
MAINTAINSTATE="false" />
</TD>
<TD>
<asp:Button RUNAT="server" WIDTH="239" onCLICK="Button_Submit" TEXT="Upload
while (dr.Read())
{
imagebytes = (byte[])dr.GetValue(1);
}
dr.Close();
using System.Web.UI.HtmlControls;
namespace UploadImage
{
public class UploadImage : Page
{
protected HtmlInputFile UP_FILE; //HtmlControl、WebControls控件对象
com.Parameters["ImageList"].Value = imagebytes;
com.ExecuteNonQuery();
con.Close();
}
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);
Image" />
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
//-------------------------------------------------------------------
//UpLoadImage.cs程序内容如下:
}
本实例主要介绍如何er从数据库中把Image字段值读出来,赋给一个byte[]字节数组,然后使用MemoryStream类与Bitmap把图片读取出来。主要代码如下:
private void button1_Click(object sender, EventArgs e)
pictureBox1.Image = bmpt;
}
本实例主要介绍如何只允许输入指定图片格式。用OpenFileDialog控件打开图片文件,只要将OpenFileDialog控件的Filter属性指定为特定的图片格式即可。例如,打开.bmp文件的图片,主要代码如下:
上一页 首页 下一页
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000