记录ueditor 秀米图片上传到本地错误

1 篇文章 0 订阅
1 篇文章 0 订阅

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值