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());
}