/***图片上传*/@ControllerpublicclassPicUploadController{privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(PicUploadController.class);@AutowiredprivatePropertieServicepropertieService;privatestaticfinalObjectMappermapper=newObjectMapper();//允许上传的格式privatestaticfinalString[]IMAGE_TYPE=newString[]{".bmp",".jpg",".jpeg",".gif",".png"};@RequestMapping(value="upload",method=RequestMethod.POST)@ResponseBodypublicStringupload(@RequestParam("uploadFile")MultipartFileuploadFile,HttpServletResponseresponse)throwsException{//校验图片格式booleanisLegal=false;for(Stringtype:IMAGE_TYPE){if(StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(),type)){isLegal=true;break;}}//封装Result对象,并且将文件的byte数组放置到result对象中PicUploadResultfileUploadResult=newPicUploadResult();//状态,0-合法,1-不合法fileUploadResult.setError(isLegal?0:1);//文件新路径StringfilePath=getFilePath(uploadFile.getOriginalFilename());if(LOGGER.isDebugEnabled()){LOGGER.debug("Picfileupload.[{}]to[{}].",uploadFile.getOriginalFilename(),filePath);}//生成图片的绝对引用地址StringpicUrl=StringUtils.replace(StringUtils.substringAfter(filePath,propertieService.REPOSITORY_PATH),"\\","/");fileUploadResult.setUrl(propertieService.IMAGE_BASE_URL+picUrl);FilenewFile=newFile(filePath);//写文件到磁盘uploadFile.transferTo(newFile);//校验图片是否合法isLegal=false;try{BufferedImageimage=ImageIO.read(newFile);if(image!=null){fileUploadResult.setWidth(image.getWidth()+"");fileUploadResult.setHeight(image.getHeight()+"");isLegal=true;}}catch(IOExceptione){}//状态fileUploadResult.setError(isLegal?0:1);if(!isLegal){//不合法,将磁盘上的文件删除newFile.delete();}//设置响应内容的类型,文本类型response.setContentType(MediaType.TEXT_HTML.toString());Stringjson=mapper.writeValueAsString(fileUploadResult);//将java对象转换为json字符串System.out.println(json);returnjson;}privateStringgetFilePath(StringsourceFileName){StringbaseFolder=propertieService.REPOSITORY_PATH+File.separator+"images";DatenowDate=newDate();//yyyy/MM/ddStringfileFolder=baseFolder+File.separator+newDateTime(nowDate).toString("yyyy")+File.separator+newDateTime(nowDate).toString("MM")+File.separator+newDateTime(nowDate).toString("dd");Filefile=newFile(fileFolder);if(!file.isDirectory()){//如果目录不存在,则创建目录file.mkdirs();}//生成新的文件名StringfileName=newDateTime(nowDate).toString("yyyyMMddhhmmssSSSS")+RandomUtils.nextInt(100,9999)+"."+StringUtils.substringAfterLast(sourceFileName,".");returnfileFolder+File.separator+fileName;}}
后台代码已贴出这东西有2个路径一个是上传的一个用来显示的回复
@iceweb:现在的情况就是前台可以访问后台的controller,但是呢,返回json数据的时候前台接收然后就显示上传失败了,他就把那个图片的bean的信息返回给我,但是正常的话是直接显示图片的
@最爱笑笑丶对,如果上传可以成功就手工通过URL看能不能访问如果能对比URL的区别是的啊,显示的是那个HTTP路径,上传的是那个本地路径,我这样说对吗?