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()); } } }