分享按钮
RSS订阅

清逸成风_记录springmvc+ueditor1.4.3上传附件问题

作者: 清逸成风 |来源:转载| 标签: 百度   java   ueditor   springmvc   上传文件   清逸成风   java编程  

百度富文本编辑器地址:http://ueditor.baidu.com/website/index.html

1.UEditor上传目录



2.在ueditor.config.js中配置serverUrl: "/resources/plugin/ueditor"

3.后台配置访问路径
@RequestMapping("resources/plugin/ueditor")
	public void baiduEdit(HttpServletRequest request, HttpServletResponse response) {
		try {
			request.setCharacterEncoding("utf-8");
			response.setHeader("Content-Type", "text/html");
			
			String rootPath = request.getServletContext().getRealPath("/");
			logger.debug("================>{}", rootPath);
			//针对配置百度上传附件读取配置文件
			ActionMap.mapping.put("config", ActionMap.CONFIG);
			//上传文件
			ActionMap.mapping.put("uploadfile", ActionMap.UPLOAD_FILE);
			ActionEnter actionEnter = new ActionEnter(request, rootPath);
			response.getWriter().write(actionEnter.exec());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

配置成功后,可以启动项目, 执行url
http://localhost:8080/longchoudai/resources/plugin/ueditor?action=config
可以看到你配在config.json中的Json数据

4.上传附件时候修改原百度BinaryUploader.java 在目录com.baidu.ueditor.upload下面
public class BinaryUploader {
	private static Logger logger = LogManager.getLogger();
	
	/**
	 * 保存文件
	 * @author lance
	 * 2015年8月27日 下午2:26:49
	 */
	public static final State save(HttpServletRequest request, Map conf) {
		boolean isAjaxUpload = request.getHeader("X_Requested_With") != null;
		if (!ServletFileUpload.isMultipartContent(request)) {
			return new BaseState(false, 5);
		}
		ServletFileUpload upload = new ServletFileUpload(
				new DiskFileItemFactory());
		if (isAjaxUpload) {
			upload.setHeaderEncoding("UTF-8");
		}
		try {
			String savePath = request.getServletContext().getRealPath("/")+"/attached/file/"+JodaTimeUtils.dateToString(new Date(), null)+"/";
			String saveUrl  = request.getContextPath() + "/attached/file/";
			
			//上传附件目录
			Path path = Paths.get(savePath);
			if(!Files.isDirectory(path)){
				try {
					Files.createDirectories(path);
				} catch (IOException e) {
					logger.error("百度上传附件创建上传文件夹错误: {}", e.getMessage());
				}
			}
	        //重新命名文件名字
			String newFileName = "", fileExt = "", fileName = "";
			CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(request.getSession().getServletContext());
			//检查form中是否有enctype="multipart/form-data"
			if(multipartResolver.isMultipart(request)) {
				//将request变成多部分request
	            MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
	            //获取multiRequest 中所有的文件名
	            Iteratorit=multiRequest.getFileNames();
	            //遍历文件
	            while(it.hasNext()) {
	            	MultipartFile file=multiRequest.getFile(it.next().toString());
	            	if(file != null){
	            		SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
	            		fileName = file.getOriginalFilename();
	            		fileExt = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
	            		//新文件名称
						newFileName = savePath + df.format(new Date()) + "_" + new Random().nextInt(1000) + fileExt;
						saveUrl = saveUrl + df.format(new Date()) + "_" + new Random().nextInt(1000) + fileExt;
						if (!validType(fileExt, (String[])conf.get("allowFiles"))) {
					        return new BaseState(false, 8);
					      }
						try {
							//上传文件
							file.transferTo(new File(newFileName));
						} catch (IllegalStateException | IOException e) {
							logger.error("百度上传附件保存文件错误: {}", e.getMessage());
						}
	            	}
	            }
			}
			
	        State storageState = new BaseState(Boolean.TRUE);
			if (storageState.isSuccess()) {
				storageState.putInfo("url", PathFormat.format(saveUrl));
				storageState.putInfo("type", fileExt);
				storageState.putInfo("original", fileName);
			}
			return storageState;
		} catch (Exception e) {
			logger.error("百度上传附件文件错误: {}", e.getMessage());
		}
		return new BaseState(false, 4);
	}

	private static boolean validType(String type, String[] allowTypes) {
		List list = Arrays.asList(allowTypes);
		return list.contains(type);
	}
}





清逸成风:www.chenzongyong.cn
逸风美图:yfmt.sinaapp.com