• 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());
          }
       }
    }
  • 相关阅读:
    第五次程序4+(结对开发)
    敏捷开发方法综述
    第四周学习进度情况
    第四次程序(结对开发)
    第三周学习进度情况
    第三次程序-四则运算(结对开发)
    RIGHT-BICEP测试第二次程序
    敏捷开发方法综述
    最大子数组之和 2
    《构建之法》阅读笔记2
  • 原文地址:https://www.cnblogs.com/eyesmoon/p/7644382.html
Copyright © 2020-2023  润新知