jsp数据存入mysql_JSP如何将图片存入数据库

这篇博客介绍了如何使用JSP将图片存入MySQL数据库,并从数据库中取出显示在网页上。关键操作涉及使用SmartUpload库处理文件上传,通过PreparedStatement将图片字节数组存入数据库,以及在展示页面通过字节数组输出图片内容。
摘要由CSDN通过智能技术生成

在写一个程序时我遇到了要将图片存入数据库的操作,在网上也没找见好的解决方法,最后请教了同事才解决.我想有的人可能用得到,就把它写出来.我只写一些核心的与图片操作相关的代码.

图片存入数据库及取出显示在网页上:

存入及取出显示都需要用到上传文件时的jspsmart.jar包。在页面上加入一些方法即可实现。需要注意的是:存取

数据库的时要用PreparedStatement而不能用Statement,否则的话图片是存不进去的,你去找原因可能得发

不少时间哦。

SmartUpload su = new SmartUpload();

// 上传初始化

su.initialize(pageContext);

// 设定上传限制

// 1.限制每个上传文件的最大长度。

// su.setMaxFileSize(10000);

// 2.限制总上传数据的长度。

// su.setTotalMaxFileSize(20000);

// 3.设定允许上传的文件(通过扩展名限制),仅允许doc,txt文件。

// su.setAllowedFilesList("jpg,jpeg");

// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。

// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");

// 上传文件

//System.out.println("test 1");

su.upload();

//System.out.println("test 2");

byte[] fileBytes = null;

for (int i = 0; i < su.getFiles().getCount(); i++) {

//System.out.println("test 3");

com.jspsmart.upload.File uploadFile = su.getFiles().getFile(i);

if (!uploadFile.isMissing()) {

//System.out.println("test 4");

//xmlFileName = uploadFile.getFilePathName();

fileBytes = new byte[uploadFile.getSize()];

for (int j = 0; j < uploadFile.getSize(); j++) {

//System.out.println("test 5");

fileBytes[j] = uploadFile.getBinaryData(j);

} break;

}

}

%>

fileBytes就是上传图片的的字节数组,得到了这个我们就能在java代码中存入数据库了。

显示图片,这里作为一个单独的jsp 页面getImage.jsp.

另一个页面info.jsp里在显示图片的地方

id根据情况要做以改变,我这只是说明问题.

Info info= dbex.findById(id);

out.clearBuffer();

response.setContentType("image/jpg");

byte[] photo=info.getPhoto();//photo为从数据库里取出的图片的字节数组

ByteArrayOutputStream imageStream=new ByteArrayOutputStream();

if(photo!=null){

imageStream.write(photo);

}

ServletOutputStream streamOut=response.getOutputStream();

imageStream.writeTo(streamOut);

streamOut.close();

%>

我在这里只是大概说了说,有兴趣的朋友可以自己试试.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值