开发者社区> 问答> 正文

kindeditor4.1.10上传图片失败?报错

  使用nginx静态存储图片,上传图片报错


正确的应该是这样

而且,即使上传出错,nginx服务器里面的资源已经上传成功。

展开
收起
爱吃鱼的程序员 2020-06-12 14:04:48 472 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
    /***图片上传*/@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路径,上传的是那个本地路径,我这样说对吗?
    2020-06-12 14:05:06
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载