怎样在Mysql中直接储存图片

合集下载

怎样在Mysql中直接储存图片

怎样在Mysql中直接储存图片

if($id) {
// 你可能需要调整主机名,用户名和密码:
@MYSQL_CONNECT( "localhost", "root", "password");
@mysql_select_db( "binary_data");
$query = "select bin_data,filetype from binary_data where id=$id";
MYSQL_CONNECT( "localhost", "root", "password");
mysql_select_db( "binary_data");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$id= mysql_insert_id();
print "<p>This file has the following Database ID: <b>$id</b>";
Hale Waihona Puke MYSQL_CLOSE();
} else {
// 否则显示储存新数据的表单
如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。
本文概述:
在mysql中建立一个新的数据库
一个怎样储存文件的例子程序

如何使用MySQL进行数据存储

如何使用MySQL进行数据存储

如何使用MySQL进行数据存储引言在如今的信息时代,数据的存储和管理成为了一项至关重要的任务。

随着互联网的发展和智能化的进步,我们每天都会产生海量的数据,如何高效地存储这些数据成为了一项重要的挑战。

MySQL是一款广泛应用于数据存储和管理的关系型数据库管理系统,本文将介绍如何使用MySQL进行数据存储。

一、MySQL的基本概述MySQL是一款开源的关系型数据库管理系统,由瑞典MySQL AB公司开发并于2008年被甲骨文公司收购。

作为一款成熟稳定的数据库系统,MySQL具有以下特点:1. 易用性:MySQL具有简单易学的特点,即使对于初学者也能够快速上手。

它提供了丰富的图形界面和命令行工具,方便用户进行数据的管理和操作。

2. 高性能:MySQL具有出色的性能表现,能够处理高并发的数据请求。

它采用了多线程的架构,可以同时处理多个用户的请求,大大提升了数据库的响应速度。

3. 可扩展性:MySQL支持水平和垂直的扩展,可以根据实际需求增加服务器的数量或者升级硬件来提升系统的性能和容量。

二、MySQL的数据存储方式在使用MySQL进行数据存储之前,我们首先需要了解MySQL的数据存储方式。

MySQL采用的是基于表的方式进行数据存储,每个表由多个列组成,每个列存储相应的数据。

数据以行的形式存储在表中,每一行代表一个记录。

MySQL支持多种数据类型,包括整型、浮点型、字符串型、日期型等。

通过选择合适的数据类型,我们可以灵活地存储不同类型的数据。

同时,MySQL还支持索引的使用,通过在特定列上创建索引,可以提高数据的查询效率。

三、MySQL的数据操作MySQL提供了丰富的SQL语句用于对数据进行操作,包括数据的增删改查等。

下面将介绍MySQL的常用数据操作方法:1. 数据的插入:通过INSERT语句可以向数据库中插入新的数据。

例如,要向名为"students"的表中插入一条记录,可以使用以下语句:INSERT INTO students (name, age, gender) VALUES ('张三', 18, '男');该语句将在"students"表中插入一条记录,包含姓名、年龄和性别的信息。

图片保存到mysql数据库

图片保存到mysql数据库

在我们设计和制作网站的过程中,有时把图片保存到数据库中要比存成文件的形式更加方便。

PHP和MySQL这对黄金组合可以很容易的实现上述功能。

在本文中,我们将会向读者介绍如何把图片保存到MySQL数据库中以及如何将数据库中的图片显示出来。

设置数据库我们通常在数据库中所使用的文本或整数类型的字段和需要用来保存图片的字段的不同之处就在于两者所需要保存的数据量不同。

MySQL数据库使用专门的字段来保存大容量的数据,数据类型为BLOB。

MySQL数据库为BLOB做出的定义如下:BLOB数据类型是一种大型的二进制对象,可以保存可变数量的数据。

BLOB具有四种类型,分别是TINYBLOB,BLOB, MEDIUMBLOB 和LONGBLOB,区别在于各自所能够保存的最大数据长度不同。

在介绍了所需要使用的数据类型之后,我们可以使用以下语句创建保存图象的数据表。

CREATE TABLE Images ( PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY, Image BLOB );编写上传脚本关于如何实现文件的上传,我们在这里就不再介绍了。

现在,我们主要来看一下如何接收上传文件并将其存入到MySQL数据库中。

具体的脚本代码如下,其中我们假定文件上传域的名称为Picture。

<? If($Picture != "none") { $PSize = filesize($Picture); $mysqlPicture = addslashes(fread (fopen($Picture, "r"), $PSize)); mysql_connect($host,$username,$password) or die("Unable to connect to SQL server"); @mysql_select_db($db) or die("Unable to select database"); mysql_query("INSERT INTO Images (Image) VALUES '($mysqlPicture')") or die("Can't Perform Query"); } else { echo"You did not upload any picture"; } ?>这样,我们就可以成功的把图片保存到数据库中。

使用MySQL进行图数据库存储和查询

使用MySQL进行图数据库存储和查询

使用MySQL进行图数据库存储和查询引言:在当今信息时代,数据的规模和复杂性不断增加,对于数据的存储和查询方式提出了更高的要求。

传统的关系型数据库虽然能够有效地存储和查询结构化的数据,但对于非结构化的数据、复杂的关系和网络结构并不擅长。

而图数据库作为一种新兴的数据库类型,能够有效地存储和查询图形结构的数据,被广泛应用于社交网络分析、推荐系统、知识图谱等领域。

本文将介绍如何使用MySQL进行图数据库的存储和查询,以及其优缺点和适用场景。

一、图数据库简介图数据库是一种以图形结构为基础,用于存储、表示和查询图数据的数据库。

它通过节点(node)和边(edge)来表示实体和实体之间的关系,并通过图的遍历和搜索算法来实现高效的查询操作。

与传统的关系型数据库相比,图数据库具有以下特点:1. 存储效率高:图数据库通过使用节点和边的方式来存储数据,能够减少存储空间的消耗,并提高数据的读取效率。

2. 查询灵活性高:图数据库能够通过遍历和搜索算法来查询图结构数据,特别适合处理非结构化和复杂关系的数据。

3. 内容和结构的一体性:图数据库将数据的结构和内容存储在一起,能够有效地保持数据的完整性和一致性。

二、使用MySQL进行图数据库存储MySQL是一种常用的关系型数据库管理系统,虽然它本身并不是专门用于存储和查询图形结构数据的数据库,但我们可以通过一些技术手段来实现图数据库的存储。

下面将介绍两种常用的方法。

1. 邻接表存储方式邻接表是一种以表格的形式存储图数据的方式,通过两个表分别存储节点和边的信息。

节点表中记录节点的唯一标识符和属性信息,边表中记录边的唯一标识符、起始节点和终止节点的标识符、以及边的属性信息。

通过关联查询,我们可以实现对图结构的查询操作。

2. 邻接矩阵存储方式邻接矩阵是一种以矩阵的形式存储图数据的方式,通过一个二维数组来表示节点之间的关系。

数组的行和列分别对应节点的标识符,数组的值表示节点之间的边的关系。

将图片储存在MySQL数据库中的几种方法

将图片储存在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; //采⽤这两种⽅式可以根据实际需求灵活选择。

如何使用MySQL进行图像和多媒体数据的存储

如何使用MySQL进行图像和多媒体数据的存储

如何使用MySQL进行图像和多媒体数据的存储MySQL是一种常用的关系型数据库管理系统,广泛应用于各种应用和领域。

它提供了丰富的功能和灵活的存储选项,包括图像和多媒体数据的存储。

本文将探讨如何使用MySQL来有效地存储和管理图像和多媒体数据,以提高应用程序的性能和用户体验。

1. 导入图像和多媒体数据在MySQL中存储图像和多媒体数据的第一步是将这些数据导入到数据库中。

可以通过多种方式实现这一目标,其中一种常用的方法是使用BLOB类型。

BLOB是Binary Large Object的缩写,它允许将二进制数据以字节的形式存储在数据库中。

为了导入图像和多媒体数据,可以使用MySQL提供的LOAD_FILE()函数。

该函数可以将文件中的数据读取为二进制字符串,并将其插入到BLOB列中。

下面是一个示例代码:```INSERT INTO media_data (id, data)VALUES (1, LOAD_FILE('/path/to/image.jpg'));```在上述示例中,media_data是包含BLOB列的表名,id是数据的唯一标识符,data是BLOB列的名称。

通过指定正确的文件路径,可以将图像或多媒体文件插入到数据库中。

2. 使用合适的数据类型和存储格式除了BLOB类型外,MySQL还提供了其他几种数据类型和存储格式,用于存储图像和多媒体数据。

选择正确的数据类型和存储格式可以提高存储效率和访问性能。

一种常见的选择是使用VARCHAR类型存储图像和多媒体数据的URL或文件路径。

通过存储URL或文件路径,可以避免在数据库中存储大型二进制数据。

这种方法适用于将图像和多媒体数据存储在文件系统中,而不是直接存储在数据库中。

另一种选择是使用MEDIUMBLOB或LONGBLOB类型存储二进制数据。

MEDIUMBLOB可以存储最大为16MB的二进制数据,而LONGBLOB可以存储最大为4GB的二进制数据。

图片存入mySql数据库

图片存入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>你运行这个程序,你就会看到刚才你写入美丽的图片就会显示在你面前。

【IT专家】用php向mysql存入图片,无法全部显示图片,急等,送50

【IT专家】用php向mysql存入图片,无法全部显示图片,急等,送50

本文由我司收集整编,推荐下载,如有疑问,请与我司联系用php 向mysql 存入图片,无法全部显示图片,急等,送50 2005/04/18 10 我用php 向mysql 存入图片,无法全部显示图片,只能显示一部分区域,区域上方的内容全是黑色,我用的是php4.3,mysql4.1 版本,服务器是apache。

下面是我的存入图片的内容,文件名为shang.php ?php $connid=@mysql_connect(“localhost”,”root”,”“)ordie(“UnabletoconnecttoSQLserver”); mysql_select_db(“photo”)ordie(“Unabletoselectdatabase”);$pic=“F:\\www\\www\\72.bmp”;if($pic!=“none”){ $fp=fopen($pic,”r”); $data=addslashes(fread($fp,filesize($pic))); fclose($fp); } $filesize=filesize($pic); $filename=basename($pic); $date=date(“y-m-dh:m:s”); $query=“insertintophoto(info,name,time,pic,filename,filesize)values(‘53’,’72’,’$date’,’$da ta’,’$filename’,’$filesize’)”;mysql_query($query,$connid)ordie(“Can’tPerformQuery”); // 或者mysql_db_query(“photo”,$query)ordie(“Can’tPerformQuery”);mysql_close(); ? photo 是数据库名,pic 为存入的图片,为longblob 型,这里为了方便,我指定了存入的图片。

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

怎样在Mysql中直接储存图片.txt21春暖花会开!如果你曾经历过冬天,那么你就会有春色!如果你有着信念,那么春天一定会遥远;如果你正在付出,那么总有一天你会拥有花开满圆。

如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。

本文概述:
在mysql中建立一个新的数据库
一个怎样储存文件的例子程序
一个怎样访问文件的例子程序
在mysql中建立一个新的database
首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。

在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:
进入MySql控制器
输入命令"create database binary_data;"
输入命令"use binary_data;"
输入命令"CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50));" (不能断行)
如果没有意外,数据库和表应该建立好了。

一个怎样储存文件的例子程序用这个例子你可以通过Html表单将文件传输到数据库中。

.
store.php3
<?php
// store.php3 - by Florian Dittmer <dittmer@>
?>
<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>
<?php
// 如果提交了表单,代码将被执行:
if ($submit) {
// 连接到数据库
// (你可能需要调整主机名,用户名和密码)
MYSQL_CONNECT( "localhost", "root", "password");
mysql_select_db( "binary_data");
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
$result=MYSQL_QUERY( "INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
"VALUES (’$form_description’,’$data’,’$form_data_name’,’$form_data_size’,’$form_data_type’)");
$id= mysql_insert_id();
print "<p>This file has the following Database ID: <b>$id</b>";
MYSQL_CLOSE();
} else {
// 否则显示储存新数据的表单
?>
<form method="post" action=" <?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File Description:<br>
<input type="text" name="form_description" size="40">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<br>File to upload/store in database:<br>
<input type="file" name="form_data" size="40">
<p><input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
</BODY>
</HTML>
如果你执行了这个程序,你将会看见一个简单的Html表单,单击“浏览”选择一个文件,然后单击提交。

当文件上传至web服务器之后,程序将会告诉你刚刚上传的文件的ID,记住这个ID,待会要用的。

一个怎样访问文件的例子程序
你可以通过这个程序访问你刚才储存的文件
<?php
// getdata.php3 - by Florian Dittmer <dittmer@>
// 调用方法: getdata.php3?id=<id>
if($id) {
// 你可能需要调整主机名,用户名和密码:
@MYSQL_CONNECT( "localhost", "root", "password");
@mysql_select_db( "binary_data");
$query = "select bin_data,filetype from binary_data where id=$id";
$result = @MYSQL_QUERY($query);
$data = @MYSQL_RESULT($result,0, "bin_data");
$type = @MYSQL_RESULT($result,0, "filetype");
Header( "Content-type: $type");
echo $data;
};
?>
程序必须知道要访问那个文件,你必须将ID作为一个参数。

例如: 一个文件在数据库中的ID为2. 你可以这样调用它:
getdata.php3?id=2如果你将图片储存在数据库里, 你可以向调用图片一样调用它。

Example: 一个图片文件在数据库中的ID为3. 你可以这样调用它:
<img src="getdata.php3?id=3">
怎样储存大于1MB的文件:
如果你想储存大于1MB的文件,你必须对你的程序、PHP设置、SQL设置进行许多修改,。

下面几条也许可以帮助你储存小于24MB的文件:
修改 store.php3 ,将 MAX_FILE_SIZE 的值改成 24000000。

修改你的PHP设置,在一般情况下,PHP只允许小于2MB的文件,你必须将max_filesize(在php.ini中)的值改成24000000
去掉MYSQL的数据包大小限制,在一般情况下 MYSQL 小于1 MB的数据包.
你必须用以下参数重启你的MYSQL
/usr/local/bin/safe_mysqld -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=24M。

相关文档
最新文档