Ueditor自定义上传文件通过SpringMVC上传图片到FTP

一、修改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");

四、演示效果 

Ueditor自定义上传文件通过SpringMVC上传图片到FTP

Ueditor自定义上传文件通过SpringMVC上传图片到FTP