百度编辑器ueditor1.4.2-更改图片上传路径和图片读取路径
2015-07-17 10:20
615 查看
/** * ueditor相关的Controller * * @author zsj */ @Controller public class UeditorController { protected final Logger logger = LoggerFactory.getLogger(getClass()); @RequestMapping(value = { "/ueditor/config" }, method = { RequestMethod.POST, RequestMethod.GET }) @ResponseBody public Object ueditorConfig( @RequestParam(value = "action", required = false) String action, HttpServletRequest request, HttpServletRequest response) throws Exception { logger.info("百度编辑器action=[{}]", action); if ("config".equals(action)) { UeditorConfigBean ucb = new UeditorConfigBean(); return ucb; } else if ("/ueditor/uploadImg".equals(action)) {// 图片上传 return uploadImg(((MultipartHttpServletRequest) request) .getFile("upfile")); } return action; } /** * 图片上传 * * @return * @throws Exception */ public Object uploadImg(MultipartFile upfile) throws Exception { String orgName = upfile.getOriginalFilename(), houzui = orgName .substring(orgName.lastIndexOf("."), orgName.length()), fileName = DateUtil .format(new Date(), "yyyyMMddHHmmss"), contentType = upfile .getContentType(), imgName = fileName + houzui; String imgPath = CommonDef.FS_ROOT + "annex/baidueditor/" + imgName; logger.info("百度编辑器上传图片orgName=[{}],contentType=[{}],imgPath=[{}]", orgName, contentType, imgPath); FileUtils.writeByteArrayToFile(new File(imgPath), upfile.getBytes()); String imgUrl = "ueditor/readImg/" + fileName + "/" + houzui.replace(".", ""); logger.info("imgUrl=[{}]", imgUrl); return "{'url':'" + imgUrl + "','state':'SUCCESS'}"; } /** * 读取图片 * * @return * @throws Exception */ @RequestMapping(value = { "/ueditor/readImg/{imgName}/{houzui}" }, method = { RequestMethod.POST, RequestMethod.GET }) public void readImg(@PathVariable("imgName") String imgName, @PathVariable("houzui") String houzui, HttpServletResponse response) throws Exception { logger.debug("读取百度编辑器的图片imgName=[{}]", imgName); response.setContentType("image/*"); String ctxPath = CommonDef.FS_ROOT + "annex/baidueditor/" + imgName + "." + houzui; File image = new File(ctxPath); if (!image.exists()) { response.getWriter().append(""); return; } response.getOutputStream().write(FileUtils.readFileToByteArray(image)); response.getOutputStream().flush(); response.getOutputStream().close(); } } /*** * <pre> * 1. 上传图片配置项 * * imageActionName {String} [默认值:"uploadimage"] //执行上传图片的action名称, * imageFieldName {String} [默认值:"upfile"] //提交的图片表单名称 * imageMaxSize {Number} [默认值:2048000] //上传大小限制,单位B * imageAllowFiles {String} , //上传图片格式显示 * * //默认值: * [".png", ".jpg", ".jpeg", ".gif", ".bmp"] * * imageCompressEnable {Boolean} [默认值:true] //是否压缩图片,默认是true * imageCompressBorder {Number} [默认值:1600] //图片压缩最长边限制 * imageInsertAlign {String} [默认值:"none"] //插入的图片浮动方式 * imageUrlPrefix {String} [默认值:""] //图片访问路径前缀 * imagePathFormat {String} [默认值:"/ueditor/php/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}"] //上传保存路径,可以自定义保存路径和文件名格式,上传路径配置 * </pre> * * <pre> * 附件上传:filePathFormat、fileUrlPrefix * 视频上传:videoPathFormat、videoUrlPrefix * </pre> */ class UeditorConfigBean { /** * <pre> * 通过在 php/config.json 文件,配置 imageUrlPrefix 可以给返回的路径添加指定的前缀。 * * 编辑器和图片地址同域的情况下,可以直接使用后台返回的路径,不需要额外配置前缀 假如编辑器和图片不在一个域名下,需要给返回路径添加域名前缀,可以设置 * imageUrlPrefix 配置项为 "http://img.domain",这时插入编辑器的图片会是这样: * * "http://img.domain/ueditor/php/upload/2014/06/06/123.jpg" * [默认值:""]图片访问路径前缀 * </pre> */ private String imageUrlPrefix = CommonDef.WEBSITE_URL; /** * <pre> * [默认值:"uploadimage"] //执行上传图片的action名称, * </pre> */ private String imageActionName = "/ueditor/uploadImg"; private String fileUrlPrefix = CommonDef.WEBSITE_URL; private String videoUrlPrefix = CommonDef.WEBSITE_URL; @Deprecated private String imagePathFormat = "/ueditor/image/{yyyy}{mm}{dd}/{time}{rand:6}"; @Deprecated private String filePathFormat = "/ueditor/file/{yyyy}{mm}{dd}/{time}{rand:6}"; @Deprecated private String videoPathFormat = "/ueditor/video/{yyyy}{mm}{dd}/{time}{rand:6}"; /** * imageFieldName {String} [默认值:"upfile"] //提交的图片表单名称 */ private String imageFieldName = "upfile"; private String[] imageAllowFiles = { ".png", ".jpg", ".jpeg", ".gif", ".bmp" }; private String[] fileAllowFiles = { ".doc", ".docx", ".txt", ".pdf", ".xlsx", ".xls", ".png", ".jpg", ".jpeg", ".gif", ".bmp" }; public String getImageUrlPrefix() { return imageUrlPrefix; } public void setImageUrlPrefix(String imageUrlPrefix) { this.imageUrlPrefix = imageUrlPrefix; } public String getImageActionName() { return imageActionName; } public void setImageActionName(String imageActionName) { this.imageActionName = imageActionName; } public String getImagePathFormat() { return imagePathFormat; } public void setImagePathFormat(String imagePathFormat) { this.imagePathFormat = imagePathFormat; } public String getFilePathFormat() { return filePathFormat; } public void setFilePathFormat(String filePathFormat) { this.filePathFormat = filePathFormat; } public String getFileUrlPrefix() { return fileUrlPrefix; } public void setFileUrlPrefix(String fileUrlPrefix) { this.fileUrlPrefix = fileUrlPrefix; } public String getVideoPathFormat() { return videoPathFormat; } public void setVideoPathFormat(String videoPathFormat) { this.videoPathFormat = videoPathFormat; } public String getVideoUrlPrefix() { return videoUrlPrefix; } public void setVideoUrlPrefix(String videoUrlPrefix) { this.videoUrlPrefix = videoUrlPrefix; } public String[] getImageAllowFiles() { return imageAllowFiles; } public void setImageAllowFiles(String[] imageAllowFiles) { this.imageAllowFiles = imageAllowFiles; } public String[] getFileAllowFiles() { return fileAllowFiles; } public void setFileAllowFiles(String[] fileAllowFiles) { this.fileAllowFiles = fileAllowFiles; } public String getImageFieldName() { return imageFieldName; } public void setImageFieldName(String imageFieldName) { this.imageFieldName = imageFieldName; } }
如何自定义请求地址
本文档说明修改请求地址的方法。应用场景
ueditor 1.4.2+ 推荐使用唯一的请求地址,通过GET参数action指定不同请求类型。但很多用户都希望使用自己写好的上传地址,下面提供一种解决方法:由于所有ueditor请求都通过editor对象的getActionUrl方法获取请求地址,可以直接通过复写这个方法实现,例子如下:js覆盖原有getActionUrl
方法的实现
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl; UE.Editor.prototype.getActionUrl = function(action) { if (action == 'uploadimage' || action == 'uploadscrawl' || action == 'uploadimage') { return 'http://a.b.com/upload.php'; } else if (action == 'uploadvideo') { return 'http://a.b.com/video.php'; } else { return this._bkGetActionUrl.call(this, action); } }
action类型以及说明
uploadimage://执行上传图片或截图的action名称uploadscrawl://执行上传涂鸦的action名称
uploadvideo://执行上传视频的action名称
uploadfile://controller里,执行上传视频的action名称
catchimage://执行抓取远程图片的action名称
listimage://执行列出图片的action名称
listfile://执行列出文件的action名称
跨域
修改请求链接往往会遇上跨域问题,跨域支持说明请移步:跨域文档相关文章推荐
- 一步一步跟我学易语言之第二个易程序菜单设计
- 解决Extjs4中form表单提交后无法进入success函数问题
- Extjs4 GridPanel的主要配置参数详细介绍
- FCK编辑器(FCKEditor)添加新按钮和功能的修改方法
- ecshop后台编辑器替换成ueditor编辑器
- Extjs4 Treegrid 使用心得分享(经验篇)
- 10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
- ExtJS4 组件化编程,动态加载,面向对象,Direct
- 关于extjs4如何获取grid修改后的数据的问题
- PHP网页 Ewebeditor 编辑器嵌入方法
- 关于UEditor编辑器远程图片上传失败的解决办法
- kindSoft在线网页编辑器简单的配置参数介绍
- dedecms5.5 最新版ckeditor编辑器整合教程
- javascript 在线文本编辑器实现代码
- 在线编辑器中换行与内容自动提取
- Extjs4实现两个GridPanel之间数据拖拽功能具体方法
- 网页上的Javascript编辑器和代码格式化
- php项目中百度 UEditor 简单安装调试和调用
- 推荐5款跨平台的PHP编辑器
- Linux-VI编辑器的使用—高手与菜鸟