java file upload BLOB

根据提供的文件信息,我们可以归纳出以下相关知识点: ### 1. 使用 Java 进行文件上传至数据库 BLOB 字段 #### 知识点说明: 在Java Web开发中,经常需要处理用户上传的文件,比如图片、文档等。这些文件通常比较大,如果直接将文件的内容作为字符串保存在数据库中,可能会导致数据库性能下降。因此,通常会采用二进制大对象(BLOB)的方式来存储较大的二进制数据。 #### 代码示例解析: 在提供的代码片段中,可以看到两个主要的方法:`getApplya` 和 `addSecurityChecks`。 - **`getApplya` 方法**: - 此方法用于从数据库中读取特定记录中的 BLOB 数据(本例中为图片),并将其返回给客户端。 - 通过 `ConnBean.getConn()` 获取数据库连接。 - 接着,执行 SQL 查询语句,该语句根据传入的 `documentno` 参数查询相应的 BLOB 数据。 - 如果查询成功并且存在结果,则获取 BLOB 对象,并通过 `getBinaryStream()` 方法将 BLOB 转换为 InputStream。 - 将读取的数据写入到客户端输出流中,完成图片的显示。 - **`addSecurityChecks` 方法**: - 此方法用于向数据库中插入新的记录,包括图片在内的各种数据。 - 同样地,通过 `ConnBean.getConn()` 获取数据库连接。 - 准备一个 SQL 插入语句,其中包含了多个字段,包括一个名为 `JPGUPLOAD` 的 BLOB 字段。 - 使用 `PreparedStatement` 设置参数值,对于 BLOB 类型的字段,使用 `setBlob` 方法设置为空的 BLOB 对象。 - 执行插入操作,并关闭数据库连接。 #### 注意事项: - 在处理 BLOB 数据时,需要注意资源管理,确保所有打开的输入输出流和数据库连接都被正确关闭。 - 当使用 Oracle 数据库时,需要引入 Oracle 的 JDBC 驱动,并且在处理 BLOB 对象时需要导入 `oracle.sql.BLOB` 类。 - 为了提高效率和安全性,可以考虑使用事务来保证数据的一致性。 ### 2. 处理图片上传和显示的技术细节 #### 技术细节解析: - **图片上传**: - 在实际应用中,用户上传的图片通常先保存在服务器端的临时文件夹中。 - 然后,将图片文件的内容读取到内存中,并通过 JDBC 的 `setBlob` 方法保存到数据库的 BLOB 字段中。 - 图片的上传可以通过 HTML 表单结合 Java Servlet 或其他框架如 Spring MVC 来实现。 - **图片显示**: - 在显示图片时,首先需要从数据库中读取 BLOB 数据。 - 将 BLOB 数据转换为 InputStream,并将其写入到 HTTP 响应的输出流中,以实现图片的显示。 - 为了提高用户体验,可以对图片进行适当的缓存处理。 #### 总结: 通过以上分析,我们可以了解到在 Java Web 开发中如何处理图片的上传与显示。这不仅涉及到基本的数据库操作,还需要掌握文件上传的相关技术以及如何处理二进制数据。同时,还需要注意优化程序性能,确保系统的稳定性和安全性。





















private void getApplya(HttpServletRequest request,HttpServletResponse response){
ResultSet result = null;
Object doucmentno=null;
Connection conn = ConnBean.getConn();
BufferedInputStream inputimage=null;
BufferedImage image;
PreparedStatement pstmt = null;
String sql = "select JPGUPLOAD from SE_SECURITYCHECKS_RECORD where DOCUMENTNO='"+request.getParameter("documentno")+"' ";
Logger.getLogger(getClass()).debug(sql);
try {
pstmt = conn.prepareStatement(sql);
result=pstmt.executeQuery();
if(result.next()){
oracle.sql.BLOB blob = (oracle.sql.BLOB)result.getBlob("JPGUPLOAD");
inputimage = new BufferedInputStream(blob.getBinaryStream());
}
OutputStream sos =response.getOutputStream();
byte [] buf = new byte [10240*1024];
int len=0;
while( (len=inputimage.read(buf))!=-1){
sos.write(buf, 0 ,len);
}

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整
- oneoneoneSeven2014-04-29很好用,谢谢分享~
- shenfeng25071609222016-11-19只有一个java文件真坑


- 粉丝: 3
- 资源: 4
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 卡耳漫滤波 PD融合控制代码.doc
- 平衡小车的卡尔曼滤波算法总结.doc
- 基于群智能优化算法的随机森林分类预测及其Matlab实现
- 基于麻雀搜索算法优化正则化极限学习机的数据分类预测MATLAB实现
- 基于C语言实现的链表队列数据结构及其基本操作
- 基于遗传算法优化BP神经网络的数据回归:Excel数据存储与详细注释的初学者友好型代码
- 汽车电子领域中AUTOSAR标准与汽车软件系统的发展及应用
- 卡尔曼滤波c语言源文件.7z
- 车载通信架构中AUTOSAR网络管理的关键模块与机制解析
- 基于C语言实现的环形数组队列数据结构及其基本操作
- 步进电机控制技术:两相与三相系统的矢量控制和超前角控制实现及应用场景
- 车载ECU刷写中重复擦除问题的技术解析与最佳实践
- 7.zip.zip.zip
- 车载软件架构中AUTOSAR AP与CP诊断系统的区别及其实现机制
- 西门子SMART PLC模拟量滤波及消抖子程序:电流电压热电阻信号稳定采集与报警解决方案
- 暖通自控领域基于西门子S7-200的空调箱恒温恒湿控制系统设计与实现


