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 进行操作。
浙公网安备 33010602011771号