1、接收到的是图片的流时
//上传头像 @RequestMapping(value = "/uploadHeadSculpture", method = RequestMethod.POST) @ResponseBody public String uploadHeadSculpture(@RequestParam("photo") String file) { User user = (User) SecurityUtils.getSubject().getSession().getAttribute("curr_user"); //获取文件格式 String postfix = file.split("/")[1].split(";")[0]; //获取图片的Base64码 String str = file.split(",")[1]; String url = ""; BASE64Decoder decoder = new BASE64Decoder(); try { // Base64解码 byte[] bytes = decoder.decodeBuffer(str); for (int i = 0; i < bytes.length; ++i) { // 调整异常数据 if (bytes[i] < 0) { bytes[i] += 256; } } long title = Calendar.getInstance().getTimeInMillis(); //获取系统路径并设定文件保存的目录 String dir = ServiceConfigUtil.getValue("imgpath");//图片的上传路径,我这里是从工程的配置文件获取的 String fileName = title + "." + postfix; // 生成jpeg图片 FileUtils.writeByteArrayToFile(new File(dir, fileName), bytes); String lookUserPhoto = ServiceConfigUtil.getValue("lookUserPhoto");//图片的访问路径,我这里是从工程配置文件获取的,可以自己定义。如果你的图片保存在工程目录下,可以直接用dir+fileName url = lookUserPhoto + fileName;//保存到数据库的图片访问路径 /×× ×保存url到数据库 ××/ } catch (Exception e) {return "no"; }return "yes"; }
注:接收参数file值的一个基本格式
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAdiUlEQVR........."
2、接收到的是file文件直接上传
@RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST) public String saveOrUpdate(Person p, @RequestParam("photo") MultipartFile file, HttpServletRequest request) throws IOException{ if(!file.isEmpty()){ ServletContext sc = request.getSession().getServletContext(); String dir = sc.getRealPath(“/upload”); //设定文件保存的目录 String filename = file.getOriginalFilename(); //得到上传时的文件名 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes()); p.setPhotoPath(“/upload/”+filename); //设置图片所在路径 System.out.println("upload over. "+ filename); } ps.saveOrUpdate(p); return "redirect:/person/list.action"; //重定向 }
时间: 2024-09-30 10:05:09