百度 UEditor--自定义上传文件路径及读取文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度 UEditor--自定义上传文件路径及读取文件相关的知识,希望对你有一定的参考价值。
jsp中替换掉上传和预览图片的URL
注意第一句判断,注意要用项目的相对URL
return ‘/sirdifoa/kentra/file/uploadImage.do‘;
if(UE.Editor.prototype._bkGetActionUrl == undefined)UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl; UE.Editor.prototype.getActionUrl = function(action) { //判断路径 这里是config.json 中设置执行上传的action名称 if (action == ‘uploadimage‘) { return ‘/sirdifoa/kentra/file/uploadImage.do‘; } else if (action == ‘uploadvideo‘) { return ‘‘; } else { return this._bkGetActionUrl.call(this, action); } }
自定义的上传、预览图片的方法。
@RequestMapping("/uploadImage") @ResponseBody // 这里upfile是config.json中图片提交的表单名称 public Map<String, String> uploadImage(@RequestParam("upfile") CommonsMultipartFile upfile, HttpServletRequest request) throws IOException { // 文件原名称 String fileName = upfile.getOriginalFilename(); // 为了避免重复简单处理 String nowName = new Date().getTime() + "_" + fileName; if (!upfile.isEmpty()) { String ueditorImagePath = PropertyUtil.readValue(Const.ueditorImagePath); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); String formatDay = simpleDateFormat.format(new Date()); // 上传位置路径 String path0 = ueditorImagePath + "/" +formatDay+"/"+ nowName; // 按照路径新建文件 java.io.File newFile = new java.io.File(path0); java.io.File newFile1 = new java.io.File(ueditorImagePath+ "/" +formatDay); if (!newFile1.exists()){ boolean mkdir = newFile1.mkdirs(); } // 复制 FileCopyUtils.copy(upfile.getBytes(), newFile); } // 返回结果信息(UEditor需要) Map<String, String> map = new HashMap<String, String>(); // 是否上传成功 map.put("state", "SUCCESS"); // 现在文件名称 map.put("title", nowName); // 文件原名称 map.put("original", fileName); // 文件类型 .+后缀名 map.put("type", fileName.substring(upfile.getOriginalFilename().lastIndexOf("."))); // 文件路径 map.put("url", "/kentra/file/getImage.do?imgName="+nowName); // 文件大小(字节数) map.put("size", upfile.getSize() + ""); return map; } /** * * 读取文件 * */ @RequestMapping("/getImage") public void readImg(String imgName, HttpServletResponse response)throws Exception { // 设置文件的返回类型 response.setContentType("image/*"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); String formatDay = simpleDateFormat.format(new Date()); // 文件路径(windows下是\\,linux下是//,都必须是绝对路径) String imgPath = PropertyUtil.readValue(Const.ueditorImagePath) + "/" +formatDay+"/"+imgName; // java中用File类来表示一个文件 java.io.File newFile = new java.io.File(imgPath); // 测试这个文件路径是否存在(也就是这个文件是否存在) if (!newFile.exists()) { return; } // FileUtils.readFileToByteArray(File file)把一个文件转换成字节数组返回 response.getOutputStream().write(FileUtils.readFileToByteArray(newFile)); // java在使用流时,都会有一个缓冲区,按一种它认为比较高效的方法来发数据: // 把要发的数据先放到缓冲区,缓冲区放满以后再一次性发过去,而不是分开一次一次地发. // 而flush()表示强制将缓冲区中的数据发送出去,不必等到缓冲区满. response.getOutputStream().flush(); response.getOutputStream().close(); }
config.json中加一个路径前缀:
/* 上传图片配置项 */ "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ "imageFieldName": "upfile", /* 提交的图片表单名称 */ "imageMaxSize": 20480000, /* 上传大小限制,单位B */ "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ "imageCompressEnable": true, /* 是否压缩图片,默认是true */ "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ "imageInsertAlign": "none", /* 插入的图片浮动方式 */ "imageUrlPrefix": "/sirdifoa", /* ==============图片访问路径前缀 ==================*/
本文出自 “JianBo” 博客,请务必保留此出处http://jianboli.blog.51cto.com/12075002/1969542
以上是关于百度 UEditor--自定义上传文件路径及读取文件的主要内容,如果未能解决你的问题,请参考以下文章