java 上传图片与图片读取
上传:
//获取参数文件流,并将文件流转化成二进制数组,适应JSP与Servlet
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory); sfu.setFileSizeMax(102400000);
sfu.setSizeMax(204800000);
List items = null;
try {
items = sfu.parseRequest(request);
} catch (SizeLimitExceededException e) {
System.out.println("size limit exception!");
} catch(Exception e) {
e.printStackTrace();
}
Iterator iter = items==null?null:items.iterator();
while(iter != null && iter.hasNext()) {
FileItem item = (FileItem)iter.next();
if(item.isFormField()) {
System.out.print("form field:");
System.out.print(item.getFieldName() + " ");
System.out.print(item.getString());
}else if(!item.isFormField()) {
System.out.println("client name:" + item.getName());
String fileName = item.getName();
//item.getInputStream() 获得文件流方法,其他文件不需要转化成二进制数组则不需要下面的转换
BufferedInputStream in = new BufferedInputStream(item.getInputStream());
byte[] b = new byte[in.available()];
in.read(b);
}
}
下载:
读取java类:
import java.io.InputStream;
import java.math.BigDecimal;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.sql.DataSource;import org.springframework.jdbc.datasource.DataSourceUtils;import com.baosight.efmpx.system.sql.SqlID;
import com.baosight.efmpx.system.util.BeanContext;
import com.baosight.efmpx.system.util.ExceptionUtil;
import com.baosight.iplat4j.core.exception.PlatException;
import com.baosight.iplat4j.dao.ibatis.sqlmap.engine.impl.SqlMapClientImpl;
import com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap;
import com.ibatis.sqlmap.engine.mapping.sql.Sql;
import com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql;
import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;
import com.ibatis.sqlmap.engine.scope.RequestScope;/*** @author danger*读取人员照片Dao*/
public class EmpPhotoDao {//读取人员照片blob字段public static List<Map> readPhoto(Object param){DataSource ds = null;Connection con = null;PreparedStatement ps = null;ResultSet resultSet = null;InputStream inputStream = null;List<Map> result = new ArrayList<Map>();try {SqlID sqlid = new SqlID("HREGEmpPhoto","readPhoto");SqlMapClientImpl client = BeanContext.getSqlMapClientImpl();/*取得查询语句*/MappedStatement statement = client.getMappedStatement(sqlid.getSqlID());/*取得ibatis sql对象*/Sql sql = statement.getSql();/*取得ibatis 参数map对象*/ ParameterMap parameterMap = null;RequestScope requestScope = new RequestScope();requestScope.setStatement(statement);if (sql instanceof DynamicSql/*动态sql*/) {parameterMap = sql.getParameterMap(requestScope, param);}else{parameterMap = statement.getParameterMap();}/*取得带参数的sql语句*/String s = sql.getSql(requestScope, param);//取得SQL连接对象ds = (DataSource)BeanContext.getBean("dataSource");con = ds.getConnection();ps = con.prepareStatement(s);if (parameterMap != null){ if(param instanceof Map){ parameterMap.setParameters(requestScope, ps, parameterMap.getParameterObjectValues(requestScope, param));}else{if(s.indexOf("?")>0){ps.setString(1, (String)param);}}}/*执行查询*/resultSet = ps.executeQuery();/*转换成目标对象*/Class c = statement.getResultMap().getResultClass();ResultSetMetaData rsm = resultSet.getMetaData();int columnCount = rsm.getColumnCount();while (resultSet.next()) {Map objMap = new HashMap();for (int i = 0; i < columnCount; i++) {if (resultSet.getObject(i + 1) instanceof Blob) {Blob blob = resultSet.getBlob(i + 1);Long length = blob.length();inputStream = blob.getBinaryStream();if(inputStream != null){byte [] bytes = new byte[length.intValue()];inputStream.read(bytes);objMap.put(rsm.getColumnName(i + 1), bytes);}inputStream.close();} else { objMap.put(rsm.getColumnName(i + 1), resultSet.getObject(i + 1));}}result.add(objMap);}} catch (SQLException e) {e.printStackTrace();throw new PlatException(ExceptionUtil.getDB2CNMessage(e));}catch (Exception e) {e.printStackTrace();} finally {try {if(ps!=null)ps.close();if(resultSet!=null)resultSet.close();DataSourceUtils.doReleaseConnection(con, ds);} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();throw new PlatException(ExceptionUtil.getDB2CNMessage(e1));}return result;} }}
JSP将Blob 二进制数组转成图片
<%@page import="javax.servlet.jsp.tagext.TryCatchFinally"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="*.EmpPhotoDao" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.util.List" %>
<%OutputStream output = null;try{String empId = request.getParameter("empId");if(empId == null || empId.equals("")){return;}Map param = new HashMap();param.put("empId",empId);//调用java类方法获取结果集List<Map> result = EmpPhotoDao.readPhoto(param);if(result != null && result.size() > 0){for(Map map:result){byte[] bytes = (byte[])map.get("photo");if(bytes != null){String sbytes = new String(bytes);//设置HTML响应内容类型为图片if(sbytes.equalsIgnoreCase("GIF")){response.setContentType("image/gif");}else{response.setContentType("image/jpeg");}//输出图片output = response.getOutputStream();output.write(bytes,0,bytes.length);output.flush();}else{return;}}}}catch(Exception e) {e.printStackTrace();}finally{try{if(output !=null){//关闭流output.close();out.clear();out = pageContext.pushBody();}}catch (Exception e) {e.printStackTrace();} }
%>
jsp显示图片代码:<!-- src为上面jsp的路径-->
<img src="EFMPX/HR/EG/imageDownload.jsp?empId=${emp.empId}" width="107" height="155" />
java 上传图片与图片读取相关推荐
- java 上传图片,图片预览,2种方法
java 上传图片,图片预览,2种方法 1. 方法一:将图片上传到特定磁盘 html页面,form表单内容: <div class="layui-form-item"> ...
- java实现将图片读取成base64字符串,将base64字符串存储为图片。
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现将图片读取成base64字符串 ,将base64字符串存储为图片. 将图片转化为字符串以后,由于字符串更方便在网络上通过ajax传输. ...
- java下cmyk图片读取和转换rgb
记录一下整个过程 第一次采用的办法 public static String readImage(String filename) throws IOException { File file = n ...
- 上传图片 现实图片 读取图片
html <!-- 读取文件: accept用来限制上传的文件格式 --> <input ref="readFile" @change="fileCha ...
- java 上传图片到图片服务器
简介: 上传图片功能想必大家都不陌生,几乎所有牵涉到用户的平台都会有上传头像等操作.今天我们就简单描述下新手如何快速上手. 一.准备个小demo 先看下图片上传工具类: /*** author : h ...
- java注解接收上传文件,前台:Input type=file 后台获取文件内容用的是spring注解,当地环境上传图片是好的,发布到服务器上图片读取不到,求大神指点...
当前位置:我的异常网» Java Web开发 » 前台:Input type="file" 后台获取文件内 前台:Input type="file" 后台获取文 ...
- java上传图片到target目录,jsp如何访问target里的图片路径
java上传图片到target目录,jsp如何访问target里的图片路径 昨天有个同学在做springmvc的图片上传,上传成功了却无法从网页中访问,我看了看上传后的路径,它用的idea编辑器,图片 ...
- java解析pdf 图片文字_Java 读取PDF中的文本和图片
本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取. 使用工具:Free Spire.PDF for Java ...
- java 像素矩阵_Java图片读取之BufferedImage得到像素矩阵的两种方式
最近在尝试着采用Java在图像处理领域实践一下常用的机器学习算法.首先涉及到的是如何将一副图片读取到一个像素矩阵中(Java中就是一维或二维数组中).在实践过程中,通过测试代码,我发现基于Buffer ...
最新文章
- ASP与ASP.NET的区别
- Linux中的top命令查看内存和cpu信息
- textField textView输入限制
- VIJOS-P1192
- 计算机基础课程在线教学授课方案,《计算机基础》课程分层次模块化教学实施方案...
- java8的spliterator
- 疫情之下,哪些行业正在逆势爆发?
- k8s容器灰度发布最佳实践(基于spinnaker)
- 面试准备(集合部分)
- node-red 可视化_可视化和注意-第4部分
- 谷歌方法 pdf txt azw3 epub mobi 百度云盘网盘下载
- 全网最详细的Python自动化测试
- html自动对齐快捷键,Sketch 技巧:好用的对齐快捷键(附设置教程)
- jekins自动化部署
- python 怎么建立文件夹_如何用PYTHON新建文件夹
- html网络语言什么意思,网络语言开车什么意思 网络用语开车是什么意思
- 解决eclipse启动Tomcat报错,显示8005和8080端口被占用的问题
- 数据结构C语言实现高铁客运订票系统
- VMWARE WORKSTATION 网络
- BME680及bsec在STM32上的应用