java 实现图片上传功能
1:jsp 页面上传图片按钮在这里我就写相关的代码
<div class="control-group"> <label class="control-label">营业执照:</label> <div class="controls"> <input type="file" class="form-control-input" name="yingYeZhiZhaoName" value="${office.yingYeZhiZhao }"/> <%-- <input type="hidden" name="yingYeZhiZhao" value="${office.yingYeZhiZhao }"/> --%> </div> <div class="controls"><img src="${office.yingYeZhiZhao }" width="203" title="点击更换图片" id="logoImgTag" /></div> </div>
2:下面是控制层action 代码
@RequestMapping("/add") public String addOffice(HttpServletRequest request, HttpServletResponse response,Office office, Model model, RedirectAttributes redirectAttributes, User user,String officeId,String userId,String roleName,MultipartFile yingYeZhiZhaoName) { String originalFilename = yingYeZhiZhaoName.getOriginalFilename(); if((officeId !=null && !"".equals(officeId))&&(userId !=null && !"".equals(userId)) ){//修改用户信息 User newUser = systemService.getUser(userId); Office newOffice = officeService.get(officeId); //用户表基本信息 if(StringUtils.isNotBlank(user.getPassword())){ String password = SystemService.entryptPassword(user.getPassword()); newUser.setPassword(password); } //newUser.setName(user.getName());//公司名称 //公司表信息 newOffice.setMaster(office.getMaster()); newOffice.setMasterSex(office.getMasterSex()); newOffice.setZhiWei(office.getZhiWei()); newOffice.setEmail(office.getEmail());//公司邮箱 newOffice.setName(office.getName());//公司名称 newOffice.setJianCheng(office.getJianCheng());//公司简称 newOffice.setProvince(office.getProvince());//省 newOffice.setCity(office.getCity());//市 newOffice.setAddress(office.getAddress()); newOffice.setDuiGongZhangHu(office.getDuiGongZhangHu());//对公账户 newOffice.setDuiGongShouKuan(office.getDuiGongShouKuan());//对公收款 newOffice.setDuiGongYinHang(office.getDuiGongYinHang());//对公银行 newOffice.setQuHao(office.getQuHao()); newOffice.setTelephone(office.getTelephone());//公司固话 newOffice.setRemarks(office.getRemarks());//备注 if(originalFilename !=null && !"".equals(originalFilename)){//如果是重新上传了图片 int num=(int)(Math.random()*100000); Map<String, String> map = QiniuUtils.fileUploadPdf(yingYeZhiZhaoName,num+officeId); newOffice.setYingYeZhiZhao(map.get(Constants.QIUNIU_EXHI_IMAGE_SOURCE)); } officeService.updateSysOffice(newOffice); systemService.udateUser(newUser); //officeService.save(newOffice); }else{//添加用户信息 if(originalFilename !=null && !"".equals(originalFilename)){//如果是重新上传了图片 int num=(int)(Math.random()*100000); Map<String, String> map = QiniuUtils.fileUploadPdf(yingYeZhiZhaoName,num+officeId); office.setYingYeZhiZhao(map.get(Constants.QIUNIU_EXHI_IMAGE_SOURCE)); } List<Role> roles = new ArrayList<Role>(0); Role role = null; User newUser = new User(); newUser.setPassword(SystemService.entryptPassword(user.getPassword()));// 设置密码 newUser.setMobile(user.getMobile());// 手机号码 newUser.setLoginName(user.getMobile());// 登录名(手机或者邮箱) role = systemService.getRole(roleName);//这地方判断是2是会展代理商15是会展主办方 roles.add(role); Role admin = new Role(); admin.setId(Constants.HE_ZUO_SHANG_ADMIN);// 默认注册的用户就是合作商管理员 roles.add(admin); newUser.setRoleList(roles); Area area = new Area(); area.setId("1"); office.setCode(UUID.randomUUID().toString()); office.setType("1"); office.setGrade("1"); office.setUseable("1"); office.setDelFlag("0"); User createBy = new User(); createBy.setId("1"); Office poffice = new Office(); poffice.setId("0"); office.setParent(poffice); office.setParentIds("0,"); office.setArea(area); office.preInsert(); office.setIsNewRecord(true); office.setCreateBy(createBy); office.setUpdateBy(createBy); office.setRole(role); officeService.register(office); newUser.setOffice(office); newUser.setCompany(office); newUser.setName(office.getName()); systemService.saveUser(newUser); } String id = "0".equals(office.getParentId()) ? "" : office.getParentId(); return "redirect:" + adminPath + "/sys/office/list?id=" + id + "&parentIds=" + office.getParentIds(); }
以上实现图片功能是把图片上传到七牛服务器上
注意
<input type="file" class="form-control-input" name="yingYeZhiZhaoName" value="${office.yingYeZhiZhao }"/> 控件里面的name 不要和提交时表单对象里面的属性一样,所以这地方最好不要写对象属性的名字
3:下面是七牛部分代码
/** * 七牛招展函上传 * @param file * @param name * @return */ public static Map<String, String> fileUploadPdf(MultipartFile file, String name) { Map<String, String> map = new HashMap<String, String>(); try { UploadManager uploadManager = new UploadManager(); // 上传到云中的文件名 // String newName = name+System.currentTimeMillis(); byte[] bytes = file.getBytes(); uploadManager.put(bytes, name, getUpToken0(name)); String isProduct = Global.getConfig("isProduct"); String url = null; if ("Y".equalsIgnoreCase(isProduct)) { url = Constants.QIUNIU_EXHI_IMAGE_URL; } else if ("N".equalsIgnoreCase(isProduct)) { url = Constants.QIUNIU_TEST_IMAGE_URL; } map.put("fileUrl", url + name); map.put("disposeUrl", url + name + ":result"); } catch (Exception e) { log.error("七牛上传文件失败:" + e.getMessage()); e.printStackTrace(); } return map; }