上传一张图片,以Blob的形式保存进数据库。保存进之后如何在页面显示这张图片呢?
废话少说,直接上代码。
jsp页面代码:
<img src="/webusermng/userh/showuserhbusinesslicense.do?hbusinesslicenseId=<%=userHBusinessLicense[0][1]%>" width="77" height="93" style="cursor: pointer;" onmouseover="javascript:document.getElementById('divimglicense').style.display='';" onmouseout="javascript:setTimeout(function(){document.getElementById('divimglicense').style.display='none'}, 1000);"/>
对了,你猜对了。其实就是一个image的src请求:
<img src="/webusermng/userh/showuserhbusinesslicense.do?hbusinesslicenseId=<%=userHBusinessLicense[0][1]%>" />
后台如何处理呢?
private ActionForward showUserHBusinessLicense(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws BizException { String hbusinesslicenseId = request.getParameter("hbusinesslicenseId"); if(hbusinesslicenseId == null || "".equals(hbusinesslicenseId)) { throw new BizException("营业执照编号不正确!"); } try { Web_file web_file = serviceLocator.getUserHService().queryHBusinessLicenseImage(Integer.valueOf(hbusinesslicenseId)); if(web_file != null) { byte[] buf = web_file.getUpf_context();// 获取Blob字节数组 response.setContentType(web_file.getUpf_contexttype()); OutputStream hblicense = response.getOutputStream();// 获取输出流 for(int i = 0; i < buf.length; i++) { hblicense.write(buf[i]);// 输出到页面 } hblicense.close();// 关闭输出流 } return null; } catch(Exception e) { e.printStackTrace(); return null; } }
这儿最主要的就是流的读出:
OutputStream hblicense = response.getOutputStream();// 获取输出流
for(int i = 0; i < buf.length; i++)
{
hblicense.write(buf[i]);// 输出到页面
}
hblicense.close();// 关闭输出流
看一看serivce的queryHBusinessLicenseImage实现层如何处理的
public Web_file queryHBusinessLicenseImage(Integer upf_id) throws BizException { SQLHelper sqlExec = new SQLHelper(false); Web_file web_file = null; try { sqlExec_lietou.beginTrans(); web_file = new Web_file(); web_file.setUpf_id(upf_id); web_file = (Web_file) ORMHelper.getObjectByPK(sqlExec, web_file); } catch(Exception e) { e.printStackTrace(); } finally { sqlExec_lietou.close(); } return web_file; }
呵呵,很简单吧!
另外一种上传附件,下载另存为附件的方法。
@RequestMapping(value = "/downloadcandidateannex/", method = RequestMethod.GET) public void downLoadCandidateAnnex(HttpServletRequest request, HttpServletResponse response) throws Exception { Integer userh_id = this.getCurrentUserId(request); if(userh_id == null || userh_id <= 0) { throw new BizException("用户编号不正确!"); } String webfileId = request.getParameter("webfileId"); WebFileForm webFileForm = serviceFactory.getPcdetailService().getCandidateAnnex(userh_id, webfileId); response.setContentType("application/x-msdownload"); try { String fileName = new String(webFileForm.getWeb_file().getUpf_filename().getBytes("gbk"), "ISO-8859-1"); response.setHeader("Content-Disposition", "attachment;" + " filename=" + fileName); InputStream ips = serviceFactory.getMongoDBService().getFileInputStream(IMongoDBService.TABLE_WEB_FILE, Integer.valueOf(webfileId)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int b = 0; while((b = ips.read()) != -1) baos.write(b); response.getOutputStream().write(baos.toByteArray()); } catch(Exception e) { throw new BizException("文件下载出错!", e); } }
一:设置下载头信息response.setContentType("application/x-msdownload");
二:获取文件流,读出
InputStream ips = serviceFactory.getMongoDBService().getFileInputStream(IMongoDBService.TABLE_WEB_FILE, Integer.valueOf(webfileId)); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int b = 0; while((b = ips.read()) != -1) baos.write(b); response.getOutputStream().write(baos.toByteArray());
相关推荐
在MySQL数据库中存储二进制大对象(BLOB)数据,如图片,是常见的做法,因为这种方式便于管理和检索。在本示例中,我们将探讨如何查询包含二进制图片数据的MySQL数据库,并通过JSP(JavaServer Pages)展示这些图片...
标题“图片直接保存到数据库,并在JSP页面显示”涉及的知识点主要集中在Web开发领域,尤其是Java Web开发,包括图片处理、数据库存储以及前端展示。这里我们将深入探讨以下几个关键环节: 1. 图片数据的二进制化:...
在这里,我们将创建一个Servlet来从数据库中读取图片的二进制数据,并将其转化为适合在网页上显示的形式。 3. **MySQL**:MySQL是一个广泛使用的开源关系型数据库管理系统,可以存储各种类型的数据,包括图片的二...
在“struts1上传图片,保存数据库,再显示jsp页面”这个场景中,我们将探讨如何利用Struts1实现文件上传,将图片数据保存到数据库,并在JSP页面上展示。 1. **Struts1的文件上传组件**: Struts1并不直接支持文件...
在图片上传场景中,JSP页面通常作为用户界面,收集用户上传的图片,然后通过表单提交到Servlet进行处理。 1. **JSP代码**: JSP页面中,我们需要一个表单来让用户选择要上传的图片。表单需要设置`enctype=...
通常,图片数据会被转化为二进制流(BLOB,Binary Large Object)存储在数据库中。 6. **上传过程**: - 用户在前端JSP页面上选择图片并提交表单。 - jspsmartupload控件捕获提交事件,处理文件数据。 - 数据...
然后,从请求中获取用户的输入信息,并将文件数据转换为二进制流,最终通过PreparedStatement执行SQL插入操作,将图片数据存储到数据库的`ImageData`字段中。 #### 五、总结 通过以上步骤,我们可以实现一个完整的...
- **数据库存储**:将文件内容以二进制大对象(BLOB)的形式存储在数据库中,虽然可能降低数据库处理效率,但提高了安全性。 3. **文件上传组件**: - **jspSmartUpload** 和 **Apache common-fileupload** 是两...
在这个方法里,我们需要解析请求中的文件内容,将二进制流保存到服务器的磁盘上,或者存储到数据库中。 在Struts1中,使用`Commons FileUpload`库可以方便地处理文件上传。首先,需要在`struts-config.xml`配置文件...
本主题聚焦于“jsp页面显示中文乱码解决”,这是一个典型的问题,许多开发者在处理包含中文字符的JSP页面时可能会遇到。让我们深入探讨这个问题,并提供一系列解决方案。 1. **字符编码基础** - **字符集与编码**...
通常,我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在 JSP 中建立相应的数据源,利用数据库访问技术处理图片信息。但是,如果我们想动态地显示图片,上述方法就不能满足...
4. **将图片保存到数据库**:对于图片的存储,常见的做法是将其转换为二进制数据,然后存储到数据库的BLOB(Binary Large Object)字段。Java提供了`java.sql.Connection`、`PreparedStatement`等接口来执行SQL语句...
1. **用户界面**:在JSP页面中,使用`<input type="file">`元素让用户选择要上传的图片,然后通过表单提交到Servlet。 2. **Servlet处理**:Servlet接收到请求后,解析请求的输入流,获取到图片的字节数据。 3. **...
从给定的文件信息来看,内容涉及了如何在MySQL数据库中存储图片数据的技术细节,以及相关的JSP页面和Java代码实现。接下来将详细说明这些知识点。 首先,文件中提到了创建数据库表的SQL语句,用于存储图片数据。...
### Java中的图片上传并在JSP页面显示 #### 知识点概述 本篇文章将详细介绍如何在Java项目中实现图片的上传功能,并将其显示在JSP页面上。这涉及到多个技术点,包括使用`commons-fileupload`组件处理文件上传、...
首先,"图片写到数据库"指的是将图片转换为二进制数据,然后存储到数据库中。在传统的Web应用中,通常会选择关系型数据库如MySQL或Oracle来存储这种类型的数据。图片的二进制内容可以作为BLOB(Binary Large Object...
在IT领域,存储图像等非结构化数据在数据库中是一项常见的需求。本示例展示了如何使用JSP(Java...同时,对于Oracle数据库,`LONG RAW`类型在Oracle 12c及以后的版本中已被弃用,推荐使用BLOB类型来存储二进制大对象。
2. **imgblob.sql**:这个名字暗示可能是一个SQL脚本,用于创建或初始化一个数据库表,该表可能用于存储二进制大对象(BLOB),即上传的文件内容。 3. **中国java下载站.url**:这可能是一个书签文件,指向一个Java...
在这个实例中,我们将探讨如何在Struts框架下实现图片的上传功能,将图片保存到数据库,并在页面上显示出来。 首先,我们需要创建一个Action类来处理用户上传的图片。这个Action类通常会包含一个方法,如`execute()...