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