1、文件上传
pojo中为byte[] 类型,数据库中对应为blob类型。
主要代码:
FileInputStream fis = null; fis = new FileInputStream(new File(filePath)); byte[] inputByte = input2byte(fis); fileBean.setContent(inputByte); /** * 将 流 转换为byte * @param inStream * @return * @throws IOException */ public static final byte[] input2byte(InputStream inStream) throws IOException { ByteArrayOutputStream swapStream = null; try { swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[1024]; int rc = 0; while ((rc = inStream.read(buff, 0, 1024)) > 0) { swapStream.write(buff, 0, rc); } return swapStream.toByteArray(); } catch (Exception e) { logger.info(e.getStackTrace()); } finally { if (swapStream != null) { safeClose(swapStream); } } return null; }
2、文件下载
@Override public void downFileByBlob(HttpServletRequest request, HttpServletResponse response, String fileId) throws IOException { AtFileupload bean = hibernateDao.getObject(AtFileupload.class, fileId); if (bean.getContent() != null) { String filename= bean.getFileName();//获取日志中存储的文件名称 String userAgent = request.getHeader("user-agent").toLowerCase(); if (userAgent.contains("msie") || userAgent.contains("like gecko")) { // IE filename = URLEncoder.encode(filename, "UTF-8"); } else { // 非IE filename = new String(filename.getBytes("UTF-8"), "iso-8859-1"); } try { byte[] fileStream = bean.getContent(); // 以流的形式下载文件 response.setContentType("application/x-msdownload"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + filename); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); toClient.write(fileStream); toClient.flush(); toClient.close(); } catch (Exception e) { logger.info(e.getStackTrace()); } } }