记录springmvc+ueditor1.4.3上传附件问题

来源:互联网 发布:旧版淘宝下载安装 编辑:程序博客网 时间:2024/06/11 12:55
百度富文本编辑器地址: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<String, Object> 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 中所有的文件名            Iterator<String>it=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<String> list = Arrays.asList(allowTypes);return list.contains(type);}}




原创粉丝点击