现象,KindEditor单张图片上传 banner.jpg 没问题。

其他人,上传就是提示 服务器报错。

最终,自己换了个浏览器,复现了。

最后得出的结论是:

banner.jpg 没问题。

500qiang.png就不行。

png后缀的,需要上传到临时目录,临时目录不存在,Windows和Linux都会报错的。

最开始还以为是,Linux没权限。

DiskFileItemFactory factory = new DiskFileItemFactory();
        // 临时文件目录,linux有/tmp目录,windows需要在当前磁盘下D盘创建“/tmp”目录
        // 坑人的地方,banner.jpg不进入/tmp目录,当然也就不需要创建。而500qiang.png就进入到/tmp目录,必须先创建目录
        factory.setRepository(new File(UPLOAD_TMP_DIR));

这段代码,就算设置了临时目录,PNG图片才会进去(upload_6a949562_2397_4220_b449_54022e43c596_00000003.tmp),jpg不会进去,不需要设置临时目录。

具体原因不详,暂时懒得去深究这个技术细节了。

今后,还是手动设置目录比较稳妥。

@Controller
public class KindeditorController extends BaseController {// 上传文件的临时目录private static final String UPLOAD_TMP_DIR = "/tmp";@RequestMapping("/kindeditor/uploadJson")public void kindeditorUploadJson(HttpServletRequest request, HttpServletResponse response)throws FileUploadException {response.setContentType("text/html;charset=UTF-8");long maxSize = GlobalConfig.Image.maxSize;// 定义允许上传的文件扩展名HashMap<String, String> extMap = new HashMap<String, String>();extMap.put("image", "gif,jpg,jpeg,png,bmp");extMap.put("flash", "swf,flv");extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");String dirName = request.getParameter("dir");if (dirName == null) {dirName = "image";}if (!ServletFileUpload.isMultipartContent(request)) {super.returnJsonString(response, ("请选择文件。"));return;}DiskFileItemFactory factory = new DiskFileItemFactory();// 临时文件目录,linux有/tmp目录,windows需要在当前磁盘下D盘创建“/tmp”目录// 坑人的地方,banner.jpg不进入/tmp目录,当然也就不需要创建。而500qiang.png就进入到/tmp目录,必须先创建目录factory.setRepository(new File(UPLOAD_TMP_DIR));ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding("UTF-8");List items = upload.parseRequest(request);Iterator itr = items.iterator();String finalFileName = "";while (itr.hasNext()) {FileItem item = (FileItem) itr.next();String fileName = item.getName();long fileSize = item.getSize();if (!item.isFormField()) {// 检查文件大小if (fileSize > maxSize) {super.returnJsonString(response, getError(GlobalConfig.Image.maxSizeTip));return;}// 检查扩展名String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();if (!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)) {super.returnJsonString(response, getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));return;}try {String ossDomain = BasePropertyConfigurer.getContextProperty("ossDomain");finalFileName = ossDomain + "/"+ ImageUploaderUtil.handleOssFileList(item.getName(), item.getInputStream());} catch (Exception e) {super.returnJsonString(response, getError("上传文件失败。"));return;}JSONObject obj = new JSONObject();obj.put("error", 0);obj.put("url", finalFileName);super.returnJsonObject(response, obj);}}}

KindEditor上传图片竟然报错了?相关推荐

  1. 为什么简单的删除集合中的元素竟然报错了?

    作者 | 七十一 来源 | 程序员巴士 前言 什么是快速失败:fail-fast 机制是java集合(Collection)中的一种错误机制.它只能被用来检测错误,因为JDK并不保证fail-fast ...

  2. webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!

    点击上方Python知识圈,设为星标 回复100获取100题PDF 阅读文本大概需要 6 分钟 近期精彩文章:Python100例(附PDF下载地址) 作者:pk哥 原创公众号:Python知识圈 刚 ...

  3. Python: pip升级报错了:You are using pip version 10.0.1, however version 20.3.3 is available.

    1,Python使用命令:python -m pip install --upgrade pip升级pip的时候报了下面这个错 2,换了个命令: python -m pip install --upg ...

  4. application.yml改成bootstrap.yml不报错了(Failed to configure a DataSource: ‘url’ attribute)

    application.yml改成bootstrap.yml不报错了(Failed to configure a DataSource: 'url' attribute) application.ym ...

  5. [ASP.NET]动态页面调用JS错误。保存为HTML文件就不报错了。

    [ASP.NET]动态页面调用JS错误.保存为HTML文件就不报错了. 郁闷死了.因为调用的JS文件中有中文,不晓得为啥子.要设置编码就可以了. 加上type="text/javascrip ...

  6. (转) 淘淘商城系列——解决KindEditor上传图片浏览器兼容性问题

    http://blog.csdn.net/yerenyuan_pku/article/details/72808229 上文我们已实现了图片上传功能,但是有个问题,那就是对浏览器兼容性不够,因为Map ...

  7. JAVA零碎要点008---tomcat启动的时候报错了严重: End event threw exception java.lang.reflect.InvocationTargetExcepti

    tomcat启动的时候报错了: 严重: End event threw exception java.lang.reflect.InvocationTargetException         at ...

  8. PHP 编辑器 kindEditor 上传图片失败 解决方案

    这个坑是原始巨坑,刚学PHP出来的时候,为这个问题鏖战了好几天,含泪将解决方案写出来,希望能帮到你们 问题 PHP 编辑器 kindEditor上传图片失败 解决方案 打开 kindEditor 的 ...

  9. c语言printf( aaa ),有大佬知道那里错了吗。aaa=jia();那报错了#incl

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有大佬知道那里错了吗. aaa=jia();那报错了 #include int jia(void); double main(void) { double ...

最新文章

  1. Django Logging
  2. 一个苏州IT人的5年挨踢经历-------经历篇(之三)
  3. 操作系统(十一)处理机调度概述
  4. 为什么做软件类项目,会出现人多,事少,工作量大的情况?
  5. 【Python】推荐10个好用到爆的Jupyter Notebook插件,让你效率飞起
  6. Powershell 查看软件是否成功安装
  7. 手机qq浏览器怎么设置上下翻页按钮 手机qq浏览器设置上下翻页按钮的方法
  8. xxljob 配置具体定时任务_分布式任务调度: XXL-Job
  9. Android自动化测试之路——技术准备
  10. 部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法
  11. matlab虚拟现实之V-Realm Builder2复制技巧(修改)
  12. 《Flutter 从0到1构建大前端应用》读后感—第7章【路由】
  13. 风控中英文术语手册(银行_消费金融信贷业务)_version6
  14. 自控原理学习笔记---控制系统稳定性分析
  15. 全球与中国SS-OCT激光市场深度研究分析报告
  16. web前端--面试题
  17. 量化开发必掌握的30个知识点【什么是分笔逐笔数据】?
  18. 【板栗糖GIS】DOS—如何在当前文件夹内部批量建子文件夹
  19. CVE-2017-12635+12636 复现+反弹shell
  20. ResRep Lossless CNN Pruning via Decoupling Remembering and Forgetting 论文学习

热门文章

  1. 两个食人族的人应聘进了IBM
  2. rstudio安装后如何打开_Rstudio安装及安装问题总结
  3. 阿里云更换系统或还原初始设置
  4. socket关闭close和shutdown
  5. 都2021了,别再堆砌网络了!10万奖金悬赏最强轻量化OCR模型
  6. 泰克示波器openchoice 安装
  7. docker安装portainer详细步骤
  8. 报告下载 | 科创板系列- 5G产业链全景图
  9. Android 点击键盘外的区域收起键盘
  10. nfc标签 方案 防伪_商品追溯防伪NFC标签制作