一、修改Ueditor的config.json的文档图片访问路径前缀改成FTP对外暴露的访问地址
"imageUrlPrefix": "http://192.168.85.98:8280/up/"
二、初始化Ueditor时绑定自定义文件上传方法
<!-- 富文本编辑器 -->
<div id="content">
<script id="editor" type="text/plain" style="width:100%;height:100%;"></script>
<script type="text/javascript">
var ue = UE.getEditor('editor');
//对编辑器的操作最好在编辑器ready之后再做
ue.ready(function() {
var content=`${orginMemo.textContent}`;
ue.setContent(content);
UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
UE.Editor.prototype.getActionUrl = function(action) {
if (action == 'uploadimage' || action == 'uploadscrawl') {
return 'http://172.25.10.42:8080/wx/ueditor/file/uploadFile.to';//这就是自定义的上传地址
} else if (action == 'uploadvideo') {
return '';
} else {
return this._bkGetActionUrl.call(this, action);
}
}
});
</script>
</div>
三、自定义SpringMVC后端文件上传方法
@RequestMapping("/ueditor/file")
public class UeditorController {
@RequestMapping("/uploadFile")
@ResponseBody
public Map<String,Object> uploadFile(HttpServletRequest request, HttpServletResponse response){
System.out.println("开始保存文件");
Map<String,Object> map = new HashMap<String,Object>();
//将上下文初始化给多部分解析器
CommonsMultipartResolver resolver=new CommonsMultipartResolver(request.getSession().getServletContext());
if(resolver.isMultipart(request)){
MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest) request;
Iterator iter=multipartRequest.getFileNames();
try {
String[] now = DateTimeUtil.getCurDateTime("yyyy-MM-dd").split("-");
String subPath_1 = "/Ueditor/";
String subPath_2 = now[0] + "/" + now[1] + "/" + now[2];
String ftpFilePath = subPath_1+subPath_2;
String ftpServer = "192.168.85.98";
String ftpUser = "xxx";
String ftpPassword = "xxx";
String fileSaveName = "";
String uid = "0";
while (iter.hasNext()) {
MultipartFile file =multipartRequest.getFile(iter.next().toString());
if(file!=null){
long size = file.getSize();
System.out.println("size="+size);
//将上传的文件转换成输入流
InputStream inStream = file.getInputStream();
System.out.println(file.getOriginalFilename());
String fileName = file.getOriginalFilename();
fileSaveName = DateTimeUtil.getCurDateTime("yyyyMMddHHmmssSSS")+"_"+uid+fileName.substring(fileName.lastIndexOf("."));
String path = this.ftpUploadImg(inStream, fileSaveName, ftpFilePath, request, ftpServer, ftpUser, ftpPassword);
map.put("path", ftpFilePath);
map.put("filename", fileSaveName);
map.put("original", fileName);
map.put("name", fileSaveName);
map.put("url", ftpFilePath+"/"+fileSaveName);
map.put("state", "SUCCESS");
map.put("type", ".jpg");
map.put("size", "99697");
}
}
} catch (Exception e) {
map.put("msg", "fail");
e.printStackTrace();
}
}
return map;
}
private String ftpUploadImg(InputStream in, String docName, String dir, HttpServletRequest request,
String ftpServer, String ftpUser, String ftpPassword) {
FileUpload ftp = null;
try {
ftp = new FileUpload();
if (ftp.ftpConnect(ftpServer, ftpUser, ftpPassword)){
ftp.getFtpClient().setRemoteVerificationEnabled(false);
if(!ftp.ftpExistDir(dir)) {
ftp.ftpMakeDir(dir);
}
if (ftp.ftpUpload(dir, StringUtil.toISO(docName),in)){
System.out.println(dir);
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
dir = "";
} finally {
if(ftp != null) ftp.ftpDisconnect();
}
if(!dir.equals("")){
return dir;
}else{
return "";
}
}
}
核心是需要返回:
map.put("path", ftpFilePath);
map.put("filename", fileSaveName);
map.put("original", fileName);
map.put("name", fileSaveName);
map.put("url", ftpFilePath+"/"+fileSaveName);
map.put("state", "SUCCESS");
map.put("type", ".jpg");
map.put("size", "99697");