图片的上传和预览(上传到oracle数据库)
来源:互联网 发布:淘宝运营黑科技 编辑:程序博客网 时间:2024/05/29 17:37
注意:
1.数据库字段使用clob存储
2.实体类中使用byte数组存图片流
3.图片预览以流的形式输出
文件上传下载预览辅助类代码:
package com.yuanxin.app.appkmbgszh.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.util.FileCopyUtils;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import org.springframework.web.multipart.commons.CommonsMultipartResolver;public class FileUtil { public static List<byte[]> upload(HttpServletRequest request) { List<byte[]> ret = new ArrayList<byte[]>(); try { // 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器) CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession() .getServletContext()); // 检查form中是否有enctype="multipart/form-data" if (multipartResolver.isMultipart(request)) { // 将request变成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // 获取multiRequest 中所有的文件名 Iterator iter = multiRequest.getFileNames(); InputStream is = null; while (iter.hasNext()) { // 一次遍历所有文件 MultipartFile file = multiRequest.getFile(iter.next().toString()); if (file != null) { is = file.getInputStream(); byte[] bytes = FileCopyUtils.copyToByteArray(is); ret.add(bytes); /* SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHssmm"); Date date = new Date(); String subfix = file.getOriginalFilename().substring( file.getOriginalFilename().lastIndexOf(".") + 1, file.getOriginalFilename().length()); String path1 = path + sdf.format(date) + "." + subfix; result.put("fileName", file.getOriginalFilename()); result.put("path", path1); // 上传 // 创建目录 File fp = new File(path1); if (!fp.exists()) { // 目录不存在的情况下,创建目录。 fp.mkdirs(); } file.transferTo(fp);*/ } } } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return ret; } public static void downloadFile(HttpServletResponse response, String path, String fileName) { try { URL url = new URL(path); URLConnection con = url.openConnection(); con.setConnectTimeout(5000); con.setReadTimeout(5000); // File file = new File(path); // 以流的形式下载文件。 InputStream is = con.getInputStream(); //InputStream is = url.openStream(); byte[] buffer = new byte[is.available()]; is.read(buffer); is.close(); // 清空response response.reset(); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO8859-1")); response.addHeader("Content-Length", "" + buffer.length); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("multipart/form-data"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } public static void showPhoto(HttpServletResponse response, byte[] photo) { response.setContentType("image/*"); OutputStream toClient = null; try { toClient = response.getOutputStream(); toClient.write(photo); toClient.close(); } catch (Exception e) { e.printStackTrace(); } }}
controller中控制代码:
//上传图片 @RequestMapping(value = "/headPortraitUpload", method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public Map<String, Object> headPortraitUpload(HttpServletRequest request, @Param("userCode") String userCode) { LOGGER.info("有访问来自,IP: %s USER-AGENT: %s", request.getRemoteAddr(), request.getHeader("user-agent")); LOGGER.info("userCode %s", userCode); Map<String, Object> ret = new HashMap<String, Object>(); if (StringUtils.isBlank(userCode)) { ret.put("success", false); ret.put("msg", "userCode不能为空"); } try { List<byte[]> streams = FileUtil.upload(request); if (streams != null && streams.size() > 0) { User user = userService.getByCode(userCode).getData(); UserPhotoAO userPhotoAO = new UserPhotoAO(); userPhotoAO.setId(user.getId()); userPhotoAO.setUserCode(user.getCode()); userPhotoAO.setUserName(user.getName()); userPhotoAO.setPhoto(streams.get(0)); userPhotoService.saveOrUpdateUserPhotoAO(userPhotoAO, userCode); ret.put("success", true); ret.put("msg", "上传成功"); } } catch (Exception e) { e.printStackTrace(); ret.put("success", false); ret.put("msg", "上传失败"); } return ret; } /** * 头像显示 * @param request * @param response * @param userCode */ @RequestMapping(value = "/showPhoto") public void showPhoto(HttpServletRequest request, HttpServletResponse response, @Param("userCode") String userCode) { LOGGER.info("有访问来自,IP: %s USER-AGENT: %s", request.getRemoteAddr(), request.getHeader("user-agent")); LOGGER.info("userCode %s", userCode); UserPhoto userPhoto = userPhotoService.getUserPhotoAO(userCode); if (userPhoto != null) { FileUtil.showPhoto(response, userPhoto.getPhoto()); } else { UserPhoto userPhoto1 = userPhotoService.getUserPhotoAO("admin"); FileUtil.showPhoto(response, userPhoto1.getPhoto()); } }
实体字段:
private byte[] photo;
阅读全文
0 0
- 图片的上传和预览(上传到oracle数据库)
- JS实现图片的上传和预览
- js前端预览上传图片到七牛服务器,保存图片路径到数据库的方法
- Oracle中上传图片到数据库
- easyUI 图片上传和预览
- angularjs 图片上传和预览
- 上传图片到数据库
- 上传图片到数据库
- 图片上传到数据库
- 上传图片到数据库
- 图片上传到数据库
- 图片上传到数据库
- 上传图片前的预览
- 预览待上传的图片
- 预览上传的本地图片
- 上传图片前的预览
- File 上传图片的预览
- 图片上传前的预览
- 条款 49
- 获取网卡名称 linux c
- 3ds max 显示物品大纲,方便修改名称
- 12 WebGL 着色器编程语言GLSL ES的全局变量和局部变量
- CentOS 7.2 安装和配置 FTP 服务器
- 图片的上传和预览(上传到oracle数据库)
- AngularJS杂记2----表达式
- 元类型之Q_DECLARE_METATYPE
- Spark RDD API详解(一) Map和Reduce
- redis外网连接
- Eclipse中查看/调试Jar包中的代码
- java 中equals()和hashCode()方法详解
- Linux网络协议栈 — IPv4分片重组
- js实现倒计时