java blob 文件上傳下載


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM