KindEditor上传图片竟然报错了?
现象,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上传图片竟然报错了?相关推荐
- 为什么简单的删除集合中的元素竟然报错了?
作者 | 七十一 来源 | 程序员巴士 前言 什么是快速失败:fail-fast 机制是java集合(Collection)中的一种错误机制.它只能被用来检测错误,因为JDK并不保证fail-fast ...
- webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!
点击上方Python知识圈,设为星标 回复100获取100题PDF 阅读文本大概需要 6 分钟 近期精彩文章:Python100例(附PDF下载地址) 作者:pk哥 原创公众号:Python知识圈 刚 ...
- 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 ...
- application.yml改成bootstrap.yml不报错了(Failed to configure a DataSource: ‘url’ attribute)
application.yml改成bootstrap.yml不报错了(Failed to configure a DataSource: 'url' attribute) application.ym ...
- [ASP.NET]动态页面调用JS错误。保存为HTML文件就不报错了。
[ASP.NET]动态页面调用JS错误.保存为HTML文件就不报错了. 郁闷死了.因为调用的JS文件中有中文,不晓得为啥子.要设置编码就可以了. 加上type="text/javascrip ...
- (转) 淘淘商城系列——解决KindEditor上传图片浏览器兼容性问题
http://blog.csdn.net/yerenyuan_pku/article/details/72808229 上文我们已实现了图片上传功能,但是有个问题,那就是对浏览器兼容性不够,因为Map ...
- JAVA零碎要点008---tomcat启动的时候报错了严重: End event threw exception java.lang.reflect.InvocationTargetExcepti
tomcat启动的时候报错了: 严重: End event threw exception java.lang.reflect.InvocationTargetException at ...
- PHP 编辑器 kindEditor 上传图片失败 解决方案
这个坑是原始巨坑,刚学PHP出来的时候,为这个问题鏖战了好几天,含泪将解决方案写出来,希望能帮到你们 问题 PHP 编辑器 kindEditor上传图片失败 解决方案 打开 kindEditor 的 ...
- c语言printf( aaa ),有大佬知道那里错了吗。aaa=jia();那报错了#incl
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 有大佬知道那里错了吗. aaa=jia();那报错了 #include int jia(void); double main(void) { double ...
最新文章
- Django Logging
- 一个苏州IT人的5年挨踢经历-------经历篇(之三)
- 操作系统(十一)处理机调度概述
- 为什么做软件类项目,会出现人多,事少,工作量大的情况?
- 【Python】推荐10个好用到爆的Jupyter Notebook插件,让你效率飞起
- Powershell 查看软件是否成功安装
- 手机qq浏览器怎么设置上下翻页按钮 手机qq浏览器设置上下翻页按钮的方法
- xxljob 配置具体定时任务_分布式任务调度: XXL-Job
- Android自动化测试之路——技术准备
- 部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法
- matlab虚拟现实之V-Realm Builder2复制技巧(修改)
- 《Flutter 从0到1构建大前端应用》读后感—第7章【路由】
- 风控中英文术语手册(银行_消费金融信贷业务)_version6
- 自控原理学习笔记---控制系统稳定性分析
- 全球与中国SS-OCT激光市场深度研究分析报告
- web前端--面试题
- 量化开发必掌握的30个知识点【什么是分笔逐笔数据】?
- 【板栗糖GIS】DOS—如何在当前文件夹内部批量建子文件夹
- CVE-2017-12635+12636 复现+反弹shell
- ResRep Lossless CNN Pruning via Decoupling Remembering and Forgetting 论文学习