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

下面是java代码

 1 /**
 2   * 用户分组文件上传.
 3   * @param request
 4   * @param response
 5   * @return
 6   * @throws Exception
 7   */
 8  @RequestMapping(value = "epgUpload")
 9  public ModelAndView epgUpload(HttpServletRequest request, HttpServletResponse response) throws Exception {
10   request.setCharacterEncoding("gbk");
11   String fileName = request.getParameter("filename");
12   boolean isMultipart = ServletFileUpload.isMultipartContent(request);
13   if (!isMultipart) {
14    return new ModelAndView("epg/epgFileUp");
15   }
16   DiskFileItemFactory factory = new DiskFileItemFactory();
17   ServletFileUpload upload = new ServletFileUpload(factory);
18   FileItemIterator itr = upload.getItemIterator(request);
19   while (itr.hasNext()) {
20    FileItemStream fi = itr.next();
21    if ("file".equals(fi.getFieldName())) {
22     InputStream is = fi.openStream();
23     byte[] b = FileCopyUtils.copyToByteArray(is);
24     if (b == null || b.length == 0) {
25      return null;
26     }
27     epgRecommendBLogic.addUserGroup(fileName, b);
28    }
29   }
30   return new ModelAndView("epg/epgFileUp");
31  }
32 
33  
34 
35 /**
36   * 用户分组文件下载.
37   * @param request
38   * @param response
39   * @return
40   * @throws Exception
41   */
42  @RequestMapping(value = "UserGroupDownLoad")
43  public ModelAndView UserGroupDownLoad(HttpServletRequest request, HttpServletResponse response) throws Exception {
44 
45   String groupName = request.getParameter("groupName");
46   List<EPGRecommenderUserGroup> blobList = epgRecommendBLogic.showUserGroupBlob("火爆");
47   for (int i = 0; i < blobList.size(); i++) {
48    EPGRecommenderUserGroup userGroup = blobList.get(i);
49    byte[] blob = userGroup.getUsers();
50    SerialBlob serialBlob = new SerialBlob(blob);
51    System.out.println(serialBlob);
52    String name = userGroup.getName();
53    File f = new File("D:/home/test.txt");
54    InputStream in = serialBlob.getBinaryStream();
55    InputStreamReader isr = new InputStreamReader(in);
56    BufferedReader br = new BufferedReader(isr);
57    String s = "";
58    while (br.read() != -1) {
59     System.out.println(br.readLine());
60    }
61    /*byte b[] = new byte[1024*1024];
62    int len = 0;
63    int temp = 0; // 所有读取的内容都使用temp接收
64    while ((temp = in.read()) != -1) { // 当没有读取完时,继续读取
65     b[len] = (byte) temp;
66     len++;
67    }
68    System.out.println(len + "==========len");
69    in.close();
70    System.out.println(new String(b, 0, len));
71    */
72 
73   }

 

 

下面是mybatis代码

 

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

 

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

主要用java的 SerialBlob 进行操作。

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