富文本编辑器

富文本编辑器的配置

<dependency>

    <groupId>com.gitee.qdbp.thirdparty</groupId>
<artifactId>ueditor</artifactId>
<version>1.4.3.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
#富文本编辑器
#host地址
host=http://192.168.1.148:8080/fupin1001 (当地的文件,无关紧要,在实际应用中)
#文件上传服务器地址(ip+端口)
uploadHost=http://113.141.72.57:8888/lunbo/ (图片服务器上传之后的样子也就是拼接的路径)
#普通图片上传保存目录
imagePath = file/image/
#系统用户头像上传保存目录
headImgPath = file/image/headImg/
#系统用户默认头像
sysUserDefImg = sysUser-default.jpg
#文本文件上传保存目录
documentPath = file/document/
#音频文件上传保存目录
soundPath = file/sound/
#视频文件上传保存目录
videoPath = file/video/
#ueditor编辑器上传文件保存目录(包括图片、视频、音频、文本等文件)
#ueditor = /home/ftp/evidence
ueditor = G:\\ceshi\\image\\ (本地测试,上传照片)

相应的上传,需要前端配合使用正确的路径
package com.sysh.web.controller;

import java.io.File;
import java.io.PrintWriter;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sysh.util.ImageUtil;
import com.sysh.util.ResultData;
import com.sysh.util.SftpUtil;
import com.sysh.utils.ResponseUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import com.sysh.baidu.ueditor.ActionEnter;
//import com.sysh.utils.ResponseUtils;
import com.sysh.utils.Upload;
import com.sun.jersey.api.client.Client;

import net.sf.json.JSONObject;

/**
* Created by sjy Cotter on 2018/10/25.
*/
@RestController
@RequestMapping("/ueditor")
public class UEditorController {

private Logger log =Logger.getLogger(this.getClass());

@RequestMapping(value="/ueditorUpload.do", method={RequestMethod.GET, RequestMethod.POST})
public ResultData config(HttpServletRequest request, HttpServletResponse response,String content) {

response.setContentType("application/json");
String rootPath = request.getSession()
.getServletContext().getRealPath("/");


String exec = new ActionEnter(request, rootPath).exec();
//log.info("得到的exec"+content.toString());
return ResultData.returnResultData(ResultData.RESULT_SUCCESS,"ok","成功");


}

//@Value(value="${ueditor}") //后台图片保存地址
//private String ueditor;

//@Value(value="${uploadHost}")
//wwprivate String uploadHost; //项目host路径

public ResultData Img(HttpServletRequest request, HttpServletResponse response,String content) {

response.setContentType("application/json");
String rootPath = request.getSession().getServletContext().getRealPath("/");


try {
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest Murequest = resolver.resolveMultipart(request);
Map<String, MultipartFile> files = Murequest.getFileMap();//得到文件map对象
// 实例化一个jersey
Client client = new Client();

for(MultipartFile pic: files.values()){
JSONObject jo = new JSONObject();
long size = pic.getSize(); //文件大小
String originalFilename = pic.getOriginalFilename(); //原来的文件名
String uploadInfo = Upload.upload(client, pic, request, response, uploadHost, ueditor);
if(!"".equals(uploadInfo)){ //如果上传成功
String[] infoList = uploadInfo.split(";");
jo.put("state", "SUCCESS");
jo.put("original", originalFilename);//原来的文件名
jo.put("size", size);//文件大小
jo.put("title", infoList[1]);//随意,代表的是鼠标经过图片时显示的文字
jo.put("type", FilenameUtils.getExtension(pic.getOriginalFilename()));//文件后缀名
jo.put("url", infoList[2]);//这里的url字段表示的是上传后的图片在图片服务器的完整地址(http://ip:端口/***/***/***.jpg)
}else{ //如果上传失败
}
//ResponseUtils.renderJson(response, jo.toString());
return ResultData.returnResultData(ResultData.RESULT_SUCCESS,"ok",jo.toString());
}
}catch (Exception e) {
e.printStackTrace();
}
return ResultData.returnResultData(ResultData.DATA_FALSE,"false");


}

//@Value(value="${ueditor}") //后台图片保存地址
@Value("#{prop.ueditor}")
private String ueditor;

//@Value(value="${uploadHost}")
@Value(("#{prop.uploadHost}"))
private String uploadHost; //项目host路径

@RequestMapping(value="/ueditorUploadImg.do", method={RequestMethod.GET, RequestMethod.POST})
public void editorUpload(HttpServletRequest request, HttpServletResponse response, String action) {
response.setContentType("application/json");
String rootPath = request.getSession().getServletContext().getRealPath("/");

try {
if("config".equals(action)){ //如果是初始化
String exec = new ActionEnter(request, rootPath).exec();
PrintWriter writer = response.getWriter();
writer.write(exec);
writer.flush();
writer.close();
}else if("uploadimage".equals(action) || "uploadvideo".equals(action) || "uploadfile".equals(action)){ //如果是上传图片、视频、和其他文件
try {
//MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//MultipartHttpServletRequest Murequest = resolver.resolveMultipart(request);
MultipartHttpServletRequest Murequest =(MultipartHttpServletRequest)request;
Map<String, MultipartFile> files = Murequest.getFileMap();//得到文件map对象
// 实例化一个jersey
Client client = new Client();

for(MultipartFile pic: files.values()){
JSONObject jo = new JSONObject();
long size = pic.getSize(); //文件大小
String originalFilename = pic.getOriginalFilename(); //原来的文件名
//String uploadInfo = Upload.upload(client, pic, request, response, uploadHost, ueditor);
String[] txt1 = originalFilename.split("\\.");
String txt = txt1[txt1.length - 1];
if (StringUtils.isBlank(originalFilename)) {
continue;
}
File tempFile = new File(ueditor, originalFilename);
Long ss = System.currentTimeMillis();
File newfile = new File(tempFile.getParent() + File.separator + ss + "." + txt);
tempFile.renameTo(newfile);
if (tempFile.exists()) {
//newfile = new File(tempFile.getParent() + File.separator + ss+"."+txt);
tempFile.renameTo(newfile);
}
if (!newfile.exists()) {
newfile.getParentFile().mkdirs();
try {
newfile.createNewFile();
pic.transferTo(newfile);
//ImageUtil imageUtil = new ImageUtil();
Integer isUpload=0;
SftpUtil sftpUtil=new SftpUtil();
isUpload=sftpUtil.LunboUpload(ss + "." + txt, ss);
if(isUpload==0)
{
//return ResultData.returnResultData(ResultData.DATA_FALSE,"上传失败");
ResponseUtils.write(response, null);
}
} catch (Exception e) {
e.printStackTrace();
}
}
String uploadInfo=uploadHost+ss+"."+txt;
if(!"".equals(uploadInfo)){ //如果上传成功
String[] infoList = uploadInfo.split(";");
jo.put("state", "SUCCESS");
jo.put("original", originalFilename);//原来的文件名
jo.put("size", size);//文件大小
//jo.put("title", infoList[1]);//随意,代表的是鼠标经过图片时显示的文字
jo.put("type", FilenameUtils.getExtension(pic.getOriginalFilename()));//文件后缀名
jo.put("url", uploadHost+ss+"."+txt);//这里的url字段表示的是上传后的图片在图片服务器的完整地址(http://ip:端口/***/***/***.jpg)
}else{ //如果上传失败
}
ResponseUtils.write(response, jo.toString());
//log.info(jo.toString());
}
}catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
}
}
}
经最终测试,我只实现了第二种方法,第二个方法属于投机取巧,也算对上传的另一种解释动用了我前面文档提到的ftp传输
他的这个采用的是另一种返回方式,所以为了迎合前端的配合,所以尽量原样返回

posted @ 2018-11-06 22:36  轩钰儿  阅读(349)  评论(0编辑  收藏  举报