1.在config.json里面配置你的图片服务器地址
不添加会发送一个这样的请求,action=‘’ undefine[]=图片地址。
2.编写秀米图片本地化上传方法
uploadUrlFile 是上传网络图片的方法,自个写,网上多的很。responseUtils 上次ueditor博文里有自个找一下。
还要注意一下 source 这个远程图片地址不要改,前端会匹配这个source,改了后图片不会替换。(不要画蛇添足,血泪踩坑)
@ResponseBody
@RequestMapping(value = "/ueditorUpload", method = { RequestMethod.GET, RequestMethod.POST })
public void editorUpload(HttpServletRequest request, HttpServletResponse response, String action) {
String rootPath = request.getSession().getServletContext().getRealPath("/");
try {
if ("config".equals(action)) { // 如果是初始化
response.setContentType("text/javascript");
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)) { // 如果是上传图片、视频、和其他文件
JSONObject obj = new JSONObject();
try {
for (MultipartFile file : getMultipartFileList(request)) {
FileInfo fileInfo = fileService.uploadFile(file, null);
obj.put("state", "SUCCESS");
obj.put("original", fileInfo.getFileOriginalName());
obj.put("size", file.getSize());
obj.put("title", fileInfo.getFileOriginalName());
obj.put("type", fileInfo.getFileType());
obj.put("url", fileInfo.getFilePath());
ResponseUtils.renderJson(response, obj.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
} else if("catchimage".equals(action)){//远程图片上传下载
ueditorUploadRemoteFile(request, response);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void ueditorUploadRemoteFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
String[] sources = request.getParameterValues("source[]");
JSONObject jsonObject = new JSONObject();
jsonObject.put("list", uploadRemoteFile(sources));
jsonObject.put("state", "SUCCESS");
ResponseUtils.renderJson(response, jsonObject.toString());
}
public JSONArray uploadRemoteFile(String[] sources) throws Exception {
JSONArray result = new JSONArray();
for (int i = 0; i < sources.length; i++) {
String source = sources[i];
if (StringUtils.isNotBlank(source)) {
// 上传文件到服务器
FileInfo fileInfo = fileService.uploadUrlFile(source, null);
// 上传文件
JSONObject map = new JSONObject();
map.put("source", source);
map.put("url", fileInfo.getFilePath());
map.put("state", "SUCCESS");
result.add(map);
}
}
return result;
}
protected List<MultipartFile> getMultipartFileList(HttpServletRequest request) {
List<MultipartFile> files = Lists.newArrayList();
try {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
if (request instanceof MultipartHttpServletRequest) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
Iterator<String> iter = multiRequest.getFileNames();
// 检查form中是否有enctype="multipart/form-data"
if (multipartResolver.isMultipart(request) && iter.hasNext()) {
// 获取multiRequest 中所有的文件名
while (iter.hasNext()) {
// 适配名字重复的文件
List<MultipartFile> fileRows = multiRequest.getFiles(iter.next().toString());
if (fileRows != null && fileRows.size() != 0) {
for (MultipartFile file : fileRows) {
if (file != null && !file.isEmpty()) {
files.add(file);
}
}
}
}
}
}
} catch (Exception ex) {
}
return files;
}
3.最后最后,一个坑。前后端跨域,前端分析你的url认为你是jsonp跨域格式,后端又不支持jsonp格式,所以死活不行。
会报一个' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.错误
解决方案:你把前端改成json格式就完了。需要修改ueditor.all.js 。注意你引用的js 是ueditor.all.min.js的话需要修改引用。
4 使用jar 包运行springboot项目的时候 配置文件路径错误
修改ConfigManager.java文件,把读取config.json方法修改
//1.非jar包运行获取方式
//String configPath = ResourceUtils.getFile("classpath:config.json").getAbsolutePath();
//String configContent = this.readFile(configPath);
//2.jar包运行获取方式
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("config.json");
String configContent = this.readFile(inputStream);
private String readFile (InputStream inputStream) throws IOException {
StringBuilder builder = new StringBuilder();
try {
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader bfReader = new BufferedReader(reader);
String tmpContent = null;
while ((tmpContent = bfReader.readLine()) != null) {
builder.append(tmpContent);
}
bfReader.close();
} catch (UnsupportedEncodingException e) {
// 忽略
}
return this.filter(builder.toString());
}