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 == 'uploadp_w_picpath') {
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("p_w_picpath/*");
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中加一个路径前缀:
/* 上传图片配置项 */
"p_w_picpathActionName": "uploadp_w_picpath", /* 执行上传图片的action名称 */
"p_w_picpathFieldName": "upfile", /* 提交的图片表单名称 */
"p_w_picpathMaxSize": 20480000, /* 上传大小限制,单位B */
"p_w_picpathAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
"p_w_picpathCompressEnable": true, /* 是否压缩图片,默认是true */
"p_w_picpathCompressBorder": 1600, /* 图片压缩最长边限制 */
"p_w_picpathInsertAlign": "none", /* 插入的图片浮动方式 */
"p_w_picpathUrlPrefix": "/sirdifoa", /* ==============图片访问路径前缀 ==================*/
转载于:https://blog.51cto.com/jianboli/1969542