数据库表中的Image数据类型可以进行数据图片的存储。保存的是二进制字节,所以写入数据库Image数据类型时,数据库自动将图片转换成二进制字节后存入。从数据库Image数据类型读取内容时,则是将二进制字节先转换成图片,再输出。
扩展资料:
如果SQL Server是缺省安装时, IMAGE类型字段是有长度限制,用来存储图片大小不超过2g的图片。缺点是占用了很大的数据存储空间。但是对于之前的存储物理路径来说读取图片和存储图片方便了很多。
IMAGE类型字段如果写入的数据超过长度限制就会抛出异常,缺省的长度限制是65536,需要修改数据库的全局配置参数才可以扩大IMAGE类型字段的存储空间。
mysql数据库是可以存储图片的, *** 作方法:
1、具体的脚本代码如下,其中我们假定文件上传域的名称为Picture;
2、这样,我们就可以成功的把图片保存到数据库中。如果在将图片插入MySQL的过程中出现问题,可以检查一下MySQL数据库所允许的最大数据包的大小。如果设置值过小的话,我们会在数据库的错误日志中找到相应的记录;
3、提取图片方法:编写两个文件。其中,第一个文件作为HTML页面的模板,定位图片的显示位置。第二个文件则被用来从数据库中实际输出文件流,作为<IMG>标签的SRC属性;
4、当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。
在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况。一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插入的麻烦。但有些时候,向MySQL中插入图片更加容易管理。
我把你的代码稍微改造了下,我这边是可以显示图片的。代码如下:
数据库 *** 作部分:
package com.databaseimport java.io.InputStream
import java.sql.*
/**
* @作者 王建明
* @创建日期 13-10-7
* @创建时间 下午12:32
* @版本号 V 1.0
*/
public class DataBaseUtil {
public static InputStream getImageStreamFromDataBase() {
Connection conn = null
try {
Class.forName("com.mysql.jdbc.Driver")
conn =
DriverManager.getConnection("jdbc:mysql://localhost/quickstart", "root", "123456")
Statement stmt = conn.createStatement()
String sql = "select book_image from tbl_book where id=1 "
ResultSet rs = stmt.executeQuery(sql)
if (rs.next()) {
return rs.getBinaryStream("book_image")
}
} catch (Exception e) {
System.out.println("出现异常: " + e.getMessage())
} finally {
try {
if (conn != null)
conn.close()
} catch (SQLException e) {
e.printStackTrace()
}
}
return null
}
}
servlet部分:
package com.servletimport com.database.DataBaseUtil
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet
import javax.servlet.http.HttpServletRequest
import javax.servlet.http.HttpServletResponse
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
/**
* @作者 王建明
* @创建日期 13-10-7
* @创建时间 下午12:18
* @版本号 V 1.0
*/
public class ShowImage extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response)
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream in = DataBaseUtil.getImageStreamFromDataBase()
OutputStream toClient = response.getOutputStream()
response.reset()
response.setContentType("image/jpg")//或gif
int len = 10*1024*1024
byte[] P_Buf = new byte[len]
int i
while((i = in.read(P_Buf)) != -1){
toClient.write(P_Buf, 0, i)
}
in.close()
toClient.flush()
toClient.close()
}
}
web.xml中的servlet配置:
<servlet><servlet-name>ShowImage</servlet-name>
<servlet-class>com.servlet.ShowImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShowImage</servlet-name>
<url-pattern>/showImage</url-pattern>
</servlet-mapping>
页面中加载图片方式:
<img src="showImage" />希望对你有帮助O(∩_∩)O~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)