記錄ueditor 秀米圖片上傳到本地錯誤

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章