分享

百度控件ueditor上传图片到指定路径(即图片存储在服务器外面,非工程目录下)

 WindySky 2018-03-12

最近做个小项目,项目要求把使用百度控件ueditor上传的图片存放在非工程目录下,指定到指定盘符,路径可配置,ueditor默认情况下存放在工程内部,如:

D:\soft\apache-tomcat-7.0.41\apache-tomcat-7.0.41\webapps\test\ueditor

现要求将图片存放到服务器外面,如以下路径(举例):

D:\demo\pic

同时显现前端展示图片,以及在ueditor富文本框中回显图片。

现将实现过程展示如下(较为粗糙,同时参考了别人实现过程,后面会给出相关链接)

1、首先在配置文件application.properties中配置路径如下:


2、修改ueditor导入包中两个文件的值:


其中config.json中修改值如下:


其中imageUrlPrefix设为空,imagePathFormat保持默认值;

然后修改controller.jsp中值:


3、修改源码:导入修改之后的jar包


内部类主要修改如下:



其中遇到一个问题就是当时没修改源码,只是将controller.jsp中

ActionEnter(request, rootPath).exec()中的rootPath传配置好的绝对路径时,不能实现上传文件,修改源码之后才实现的!

注意:完成上面三步,只能实现将图片上传到配置路径中,不能实现在富文本框中的图片回显,即如下效果:

没有修改js时非常显示,其实这时图片已经实现上传,只是由于img标签src属性不正确。


正常显示:


实现图片即刻在文本框中显示效果,一般有两种效果,第一种就是配置tomcat的虚拟映射路径;第二种就是通过专门的action用数据流实现显示图片效果;这里介绍第二种!

4、项目使用spring框架,处理图片的action中方法如下:


而其中的image1.jsp如下所示,jsp中通过java代码实现图片流的显示!

  1. <%@ page contentType="text/html; charset=utf-8" language="java"%>  
  2. <%@ page import=" java.sql.*,java.util.*,java.io.* " errorPage=""%>  
  3. <%@ include file="/views/common/taglib.jsp"%>  
  4. <%@ taglib prefix="c" uri="http://java./jsp/jstl/core"%>  
  5. <%  
  6.     String path = request.getContextPath();  
  7.     String basePath = request.getScheme() + "://"  
  8.             + request.getServerName() + ":" + request.getServerPort()  
  9.             + path + "/";  
  10. %>  
  11.   
  12. <%  
  13.     out.clear();  
  14.     out = pageContext.pushBody();  
  15.     response.setContentType("image/png ");  
  16.     try {  
  17.         String imgName = request.getParameter("fileName");  
  18.         String p1 = (String) session.getAttribute("impath");//获取配置文件中设置的图片上传路径  
  19.         String path1 = p1+ imgName;//图片绝对路径  
  20.         String path2 = p1+"/ueditor/error.jpg";  
  21.         //判断该路径下的文件是否存在  
  22.         File file = new File(path1);  
  23.         if (file.exists() && !imgName.equals("")) {  
  24.             DataOutputStream temps = new DataOutputStream(  
  25.                     response.getOutputStream());  
  26.             DataInputStream in = new DataInputStream(  
  27.                     new FileInputStream(path1));  
  28.   
  29.             byte[] b = new byte[2048];  
  30.             while ((in.read(b)) != -1) {  
  31.                 temps.write(b);  
  32.                 temps.flush();  
  33.             }  
  34.   
  35.             in.close();  
  36.             temps.close();  
  37.         } else {  
  38.             DataOutputStream temps = new DataOutputStream(  
  39.                     response.getOutputStream());  
  40.             DataInputStream in = new DataInputStream(  
  41.                     new FileInputStream(path2));  
  42.   
  43.             byte[] b = new byte[2048];  
  44.             while ((in.read(b)) != -1) {  
  45.                 temps.write(b);  
  46.                 temps.flush();  
  47.             }  
  48.   
  49.             in.close();  
  50.             temps.close();  
  51.         }  
  52.   
  53.     } catch (Exception e) {  
  54.         out.println(e.getMessage());  
  55.     }  
  56. %>  

5、完成上面4步还是不能完成实现富文本框中图片回显,需要修改ueditor中的js文件ueditor.all.js中代码,因为此处需要修改的是上传图片img标签下的src属性,默认情况下,该src取值是上面的

imagePathFormat值,此处需要修改src属性值,前面加一个string值,


修改后,即可见src属性变为如下:



网页代码如下:


该处src路径即可完成图片的请求,该请求通过上面的action的image1方法实现。

到这时,即实现图片上传的非工程目录的指定路径下


参考文章如下(应用的是此文给出的jar包,表示感谢):

http://blog.csdn.net/ouyhong123/article/details/44461689


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多