社区
Java SE
帖子详情
怎么用java将图片转换成二进制存放到sqlserver中,并读出进行显示???????
aweiliu
2006-03-05 02:21:24
请问:
怎么用java将图片转换成二进制存放到sqlserver中,并读出进行显示???????
各位高手请赐教阿。
急用阿。
...全文
816
11
打赏
收藏
怎么用java将图片转换成二进制存放到sqlserver中,并读出进行显示???????
请问: 怎么用java将图片转换成二进制存放到sqlserver中,并读出进行显示??????? 各位高手请赐教阿。 急用阿。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiangzhengyan
2006-03-09
打赏
举报
回复
图片一般不会保存在数据库中的,因为效率太低,用户每次访问网页都要从数据库中读图片.
如国是为了便于管理,不得不把图片放入数据库,一般都会写一个函数,让它定期的(或条件满足时)把图片从数据库中读出放在硬盘上特定目录中(如f:\test\test.jpg).用户访问时就不需从数据库中读图片<img src="f:\test\test.jpg"
xiangzhengyan
2006-03-09
打赏
举报
回复
方法1:专门写个函数把数据从数据库中读出,作为文件形(如test.jpg)式保存在硬盘上,然后在html中显示<img src="test.jpg"/
----------------------------------------------------------------------
方法2:写一个servlet
public class GetPhotoAction extends Action {
private static final String CONTENT_TYPE = "image/gif; charset=GBK";//输出类型为 图像
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response) {
int empid;
try {
empid = Integer.parseInt(request.getParameter("empid"));//员工id
} catch (NumberFormatException e) {
empid = 0;
}
response.setContentType(CONTENT_TYPE); //设置输出类型
OutputStream out = null;
try {
out = response.getOutputStream();//得到输出流
} catch (IOException ex1) {
ex1.printStackTrace(System.out);
}
try {
byte[] photo = Operator.getDBPhoto(empid);//从数据库中读出文件
if (photo!=null && photo.length > 0) {
out.write(photo); //输出到网页上
}
} catch (Exception ex) {
ex.printStackTrace(System.out);
}
return null;
}
}
我是在struct中写的,如果你用的是jsp+servlet,把Action改成Servlet即可.
由于CONTENT_TYPE = "image/gif; charset=GBK",所以你直接在浏览器中访问这个servlet的话只能看到一张大的图片,就算写了out.write("aaaaaaaaa"),也不会看到字符输出,所以你只能在jsp中调用这个servlet
<img src="getPhotoAction.do?empid=123"alt="照片" width="185" height="218">
fire222
2006-03-06
打赏
举报
回复
关注中
kill8108
2006-03-06
打赏
举报
回复
PreparedStatement 是Statement的子类,只不过PreparedStatement 是预编绎的语句呀,速度在某种程况下会快一点吧!图片是一个文件,也可以使用流的形式来处理的!不过一般不会把图片直接放到数据库中!!
cjianwen
2006-03-06
打赏
举报
回复
俺只看到怎么读,怎么没看到具体显示的html代码,怎么显示呀?
mdsp25xhm
2006-03-06
打赏
举报
回复
学习
sunrisefe
2006-03-05
打赏
举报
回复
以二进制的形式插入到数据库中去. 与普通的数据插入不一样,这里用的是PreparedStatement 来执行插入语句,而不是用Statement.
xiangzhengyan
2006-03-05
打赏
举报
回复
也可用流
InputStream ins;//图片文件
int filesize//图片大小
pstmt.setBinaryStream(2,ins,filesize)
xiangzhengyan
2006-03-05
打赏
举报
回复
在哪显示,jsp还是窗体
xiangzhengyan
2006-03-05
打赏
举报
回复
byte[] photo;
先把图片像普通文件一样读入photo;
如果表有id(int)和img(image)两个字段
String sql = "insert into empinfo values(?,?);";//conn是Connection的对象
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,99);
pstmt.setBytes(2,photo);
pstmt.executeUpdate
pstmt.close();
conn.close();
lydvqq
2006-03-05
打赏
举报
回复
建表:
CREATE TABLE [dbo].[emp] (
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[pay] [money] NULL ,
[img] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
--test.htm--
<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>
--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("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
Connection conn = DriverManager.getConnection(url,"sa","sa");
System.out.println("diver is ok");
String content=request.getParameter("content");
String filename=request.getParameter("image");
FileInputStream img=new FileInputStream(filename);
String sql="insert into emp(name,pay,img) values('lyd',12,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setBinaryStream(1,img,img.available());
pstmt.execute();
out.println("Success,You Have Insert an Image Successfully");
%>
--show.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("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
Connection conn = DriverManager.getConnection(url,"sa","sa");
System.out.println("diver is ok");
String sql = "select img from emp ";
Statement stmt=null;
ResultSet rs=null;
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch(SQLException e)
{
out.println("db connection error!");
}
try{
while(rs.next()){
//rs.setContentType("image/jpeg");
ServletOutputStream sout = response.getOutputStream();
InputStream in = rs.getBinaryStream("img");
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>
数据库读入、
读出
图片
资料
在网页上
显示
数据库
中
的
图片
,通常通过后端服务器查询
图片
数据,然后将字节流返回给前端,前端再渲染成
图片
。例如,使用HTTP响应的`Content-Type`设置为
图片
类型,`Content-Disposition`指定文件名。 理解并掌握...
【
Java
数据库】CLOB BLOB 在数据库
中
存入/取出大量文本数据、
二进制
文件(
图片
)
CLOB(Character Large Object) ...而非一般的字段,一次即可
读出
数据。 • Mysql
中
相关类型: – TINYTEXT最大长度为255(2^[8]–1)字符的TEXT列。 – TEXT[(M)]最大长度为65,535(2^[16]–1)字符的TEXT列。 – ...
SQL Server 数据库-从基础到掌握
sql server 数据库学习
基于Microsoft SQL Server的BLOB数据的存取方法研究
摘要:主要探讨几种在SQL Server数据库
中
存取BLOB数据的方法,并结合实例介绍不利用开发工具,在SQL Server数据库
中
对BLOB数据
进行
直接存取的方法。 关键词:BLOB数据;SQL Server;存取
中
图分类号:TP392 文献标识...
JAVA
面试题大全
字节码是
Java
程序编译后的
中
间代码,是一种可移植的
二进制
代码,可以在任何支持
Java
虚拟机(JVM)的平台上运行。字节码通过将
Java
源代码编译为字节码指令序列,使得
Java
程序可以跨平台运行,即使是在不同的...
Java SE
62,625
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章