java上传图片怎么查看_java 上传图片与图片读取

本文介绍了一种在Java中处理文件上传的方法,并展示了如何通过ServletFileUpload解析请求、读取文件流并将其转换为二进制数组。此外,还详细说明了如何从数据库中读取Blob字段,并将其转换为图片进行展示。
摘要由CSDN通过智能技术生成

上传:

//获取参数文件流,并将文件流转化成二进制数组,适应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 readPhoto(Object param){

DataSource ds = null;

Connection con = null;

PreparedStatement ps = null;

ResultSet resultSet = null;

InputStream inputStream = null;

List result = new ArrayList();

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 block

e1.printStackTrace();

throw new PlatException(ExceptionUtil.getDB2CNMessage(e1));

}

return result;

}

}

}

JSP将Blob 二进制数组转成图片

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 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显示图片代码:

imageDownload.jsp?empId=%24%7Bemp.empId%7D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值