Oracle 上传文件到blob 读写操作。(实验通过)

 

下面是java代码

/**
  * 用户分组文件上传.
  * @param request
  * @param response
  * @return
  * @throws Exception
  */
 @RequestMapping(value = "epgUpload")
 public ModelAndView epgUpload(HttpServletRequest request, HttpServletResponse response) throws Exception {
  request.setCharacterEncoding("gbk");
  String fileName = request.getParameter("filename");
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);
  if (!isMultipart) {
   return new ModelAndView("epg/epgFileUp");
  }
  DiskFileItemFactory factory = new DiskFileItemFactory();
  ServletFileUpload upload = new ServletFileUpload(factory);
  FileItemIterator itr = upload.getItemIterator(request);
  while (itr.hasNext()) {
   FileItemStream fi = itr.next();
   if ("file".equals(fi.getFieldName())) {
    InputStream is = fi.openStream();
    byte[] b = FileCopyUtils.copyToByteArray(is);
    if (b == null || b.length == 0) {
     return null;
    }
    epgRecommendBLogic.addUserGroup(fileName, b);
   }
  }
  return new ModelAndView("epg/epgFileUp");
 }

 

/**
  * 用户分组文件下载.
  * @param request
  * @param response
  * @return
  * @throws Exception
  */
 @RequestMapping(value = "UserGroupDownLoad")
 public ModelAndView UserGroupDownLoad(HttpServletRequest request, HttpServletResponse response) throws Exception {

  String groupName = request.getParameter("groupName");
  List<EPGRecommenderUserGroup> blobList = epgRecommendBLogic.showUserGroupBlob("火爆");
  for (int i = 0; i < blobList.size(); i++) {
   EPGRecommenderUserGroup userGroup = blobList.get(i);
   byte[] blob = userGroup.getUsers();
   SerialBlob serialBlob = new SerialBlob(blob);
   System.out.println(serialBlob);
   String name = userGroup.getName();
   File f = new File("D:/home/test.txt");
   InputStream in = serialBlob.getBinaryStream();
   InputStreamReader isr = new InputStreamReader(in);
   BufferedReader br = new BufferedReader(isr);
   String s = "";
   while (br.read() != -1) {
    System.out.println(br.readLine());
   }
   /*byte b[] = new byte[1024*1024];
   int len = 0;
   int temp = 0; // 所有读取的内容都使用temp接收
   while ((temp = in.read()) != -1) { // 当没有读取完时,继续读取
    b[len] = (byte) temp;
    len++;
   }
   System.out.println(len + "==========len");
   in.close();
   System.out.println(new String(b, 0, len));
   */

  }

 

下面是mybatis代码

<insert id="addUserGroup" parameterType="java.util.HashMap">
  insert into EPG_RECOMMENDER_USERGROUP(NAME,USERS,VERSION,UPDATETIME,STATE) values(#{fileName},#{data,jdbcType=BLOB},#{version},TO_DATE(#{today},'yyyy-mm-dd'),#{state})
 </insert>

 

网上大部分都是原始的jdbc操作,对在mybatis下的操作很少有解决方法。

主要用java的 SerialBlob 进行操作。

posted @ 2013-04-18 12:34  飘-北  阅读(372)  评论(0)    收藏  举报