最近一个项目中因为框架的原因,很多文本编辑器都不兼容,最后找到xheditor,这个富文本编辑器的确不错,功能基本都能满足,只是上传图片的java接口需要自己写,因此,测试了两种方法,最终成功。分享给大家。

xheditor官方给出了上传接口。因此我们只需要调用自己的Action按照它指定的json格式返回一个json数据就可以了。

一、使用servlet时的实现方式,servlet的实现方式需要引入commons-fileupload-1.3.1.jar包。主要是用来解析前台传过来的请求。

1、前台页面的写法,当然要引入xheditor啦,这里我就写了。这里主要是upImgUrl要写上你后台的Servlet。

${article.articlecontent }

2、后台servlet的写法。配置文件中我也省略了,这里仅仅是一个Servlet。需要注意的,这里要引入commons-fileupload-1.3.1.jar包来解析请求。

packagecom.zk.web.action;importjava.io.File;importjava.io.IOException;importjava.util.Iterator;importjava.util.List;importjavax.servlet.ServletConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;public class UploadFileServlet extendsHttpServlet {private static final long serialVersionUID = 1L;privateServletContext sc;public voidinit(ServletConfig config) {

sc=config.getServletContext();

}protected voiddoGet(HttpServletRequest request,

HttpServletResponse response)throwsServletException, IOException {this.doPost(request, response);

}protected voiddoPost(HttpServletRequest request,

HttpServletResponse response)throwsServletException, IOException {

ServletOutputStream out=response.getOutputStream();

request.setCharacterEncoding("utf-8");

response.setHeader("Content-Type" , "text/html");

String returnPath= "";

DiskFileItemFactory factory= newDiskFileItemFactory();

ServletFileUpload upload= newServletFileUpload(factory);try{

List items=upload.parseRequest(request);

Iterator iter=items.iterator();while(iter.hasNext()) {

FileItem item=(FileItem) iter.next();

System.out.println("上传文件的大小:" +item.getSize());

System.out.println("上传文件的类型:" +item.getContentType());

System.out.println("上传文件的名称:" +item.getName());

returnPath= "images/"+item.getName();

//这里是取得项目地址

File forder = new File(sc.getRealPath("/")+"images/");

//判断文件夹是否存在if (!forder.exists()) {

forder.mkdir();

}

File file= new File(sc.getRealPath("/")+"images/"+item.getName());

item.write(file);

System.out.println("上传文件成功!");

}

}catch(Exception e) {

e.printStackTrace();

System.out.println("上传文件失败");

}//这里是关键,返回上传图片存储在服务器的地址。路径根据自己项目的路径调整。

out.print("{‘err‘:‘‘,‘msg‘:‘"+ returnPath.replace("\\", "/")+"‘}");

}

}

二、使用spring mvc时的实现方式。uploadImage就是一个Action,

1、前台页面的写法,当然要引入xheditor啦,这里我就写了。这里主要是upImgUrl要写上你后台的Action。

${article.articlecontent }

2、后台Action的写法,这里是使用的是sping mvc框架,spring没测试过,有需要的可以试试。

/*** 文本编辑器上传图片

*@paramrequest

*@paramresponse

*@return*@throwsException*/

public voiduploadImage(HttpServletRequest request,

HttpServletResponse response)throwsException{

ServletOutputStream out=response.getOutputStream();

request.setCharacterEncoding("utf-8");

response.setHeader("Content-Type" , "text/html");

CommonsMultipartResolver commonsMultipartResolver= newCommonsMultipartResolver(

request.getSession().getServletContext());//设置编码

commonsMultipartResolver.setDefaultEncoding("utf-8");if(commonsMultipartResolver.isMultipart(request)) {

MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest) request;

MultipartFile image= multipartRequest.getFile("filedata");

String url= "images"+File.separator+Tool.dateToString(new Date(), "yyyyMMdd")+File.separator;

//这里可以从项目中取得你项目根目录的地址

String filePath= "D:/"+url;

Random r= newRandom();if(image != null && !image.isEmpty()){

InputStream xtins=image.getInputStream();

String hj= new String(image.getOriginalFilename().getBytes("ISO-8859-1"),"UTF-8");

hj= hj.split("\\.")[1];

//这里用来生成文件名

String fileName= Tool.dateToString(new Date(), "yyyyMMddHHmmss")+r.nextInt(1000)+"."+hj;

saveInputStreamToFile(filePath, fileName, xtins);

//这里是用来返回给xheditor的

out.print("{‘err‘:‘‘,‘msg‘:‘"+ (url+fileName).replace("\\", "/")+"‘}");

}

}

}/*** 保存文件流到指定路径

*@paramfilePath

*@paramfileName

*@paraminputStream

*@throwsException*/

public voidsaveInputStreamToFile(String filePath, String fileName,

InputStream inputStream)throwsException {

OutputStream os= null;try{

File forder= newFile(filePath);if (!forder.exists()) {

forder.mkdir();

}

File file= new File(filePath +fileName);

os= newFileOutputStream(file);int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {

os.write(buffer,0, bytesRead);

}

os.close();

inputStream.close();

}catch(Exception ex) {

ex.printStackTrace();throwex;

}finally{if (inputStream != null) {

inputStream.close();

}if (os != null) {

os.close();

}

}

}

原文:http://www.cnblogs.com/fengqingyuweihan/p/3850875.html

java xheditor 上传图片_xheditor上传图片的java实现相关推荐

  1. xheditor form java_xheditor 上传图片 Jfinal处理 出现异常

    五杀联盟 发布于 2014/10/29 09:48 阅读 1K+ 收藏 0 [ERROR]-[Thread: http-listener-1(4)]-[com.jfinal.core.ActionHa ...

  2. java相册_精致小巧的java相册制作方法

    本文实例为大家分享了java相册制作方法,供大家参考,具体内容如下 注: 1)html上的图片是静态指定的.当更新了新的图片时必须手工更新.所以使用Servlet读取本地images中的所有图片,动态 ...

  3. 广东java工资一般多少_广东java工资待遇,广东java工资一般多少,广东java工资底薪最低多少...

    广东java工资待遇,广东java工资一般多少,广东java工资底薪最低多少 首页 > java > 广东java工资待遇 作者:镀金池   发布时间:2018-12-22 11:20 在 ...

  4. Java学习路线图,如何学习Java事半功倍?

    作为一个初学者想掌握Java并不是很容易,Java本身是具有一定难度的,虽然说兴趣这东西可以让我们学习不累,但是有多少人学习是因为兴趣,或者有多少人知道自己的兴趣在哪?所以我很明确的告诉你学习这事本来 ...

  5. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

  6. java pdf插件下载_免费java pdf控件

    云原生的概念和理论体系非常的完备,but talk is cheap , show me the code ! 但是作为一名程序员,能动手的咱绝对不多BB,虽然talk并不cheap , 能跟不同层次 ...

  7. in the java search_Search API – Using scrolls in Java - Elasticsearch Java API 手册

    Using scrolls in Java 一般搜索请求都是返回一"页"数据,无论数据量多大都一起返回给用户,Scroll API可以允许我们检索大量数据(甚至全部数据).Scro ...

  8. centos java yum_CentOS7 使用yum命令安装Java SDK

    CentOS 6.X 和 7.X 自带有OpenJDK runtime environment  (openjdk).它是一个在linux上实现开源的Java 平台. 安装方式: 1.输入以下命令,以 ...

  9. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  10. 利用java虚拟机的工具jmap分析java内存情况

    2019独角兽企业重金招聘Python工程师标准>>> 有时候碰到性能问题,比如一个java application出现out of memory,出现内存泄漏的情况,再去修改bug ...

最新文章

  1. 最新+经典+论文+代码+多版本+神器+https://paperswithcode.com/
  2. Android进阶笔记07:Android之MVC 理解
  3. cpio用法详细说明
  4. VTK:PolyData之PointInsideObject
  5. Xcode6 itunes完美打包api 方法
  6. 在MFC的picture控件中如何显示Mat图
  7. 木桶布局 原理与实现
  8. 大学c语言基本程序,一个大学C语言试题的简单实现--员工信息管理程序
  9. milk and news paper(transfer)
  10. PHP实现8进制转10进制,php 实现进制相互转换
  11. [转载] python numpy np.exp()函数
  12. Event Filter Table Entry
  13. IDEA Translation插件,有道智云(有道翻译)应用ID,密钥申请教程
  14. FDD LTE B1是什么
  15. STM32F103驱动无刷直流电机应用思路
  16. Dnsmasq+ipset+iptables基于域名的流量管理
  17. 罗马盘、大力盘、大圣盘等搜索网站,简单绕过付费
  18. php tp6 错误接管分析,ThinkPHP5 异常接管
  19. 【探索】excel VBA的任意坐标画线问题
  20. 通过百度语音生成音频文件

热门文章

  1. ios弱网测试_iOS模拟弱网测试
  2. Unity - Timeline 之 Deleting tracks(删除轨道)
  3. [转]NHibernate中DateTime,int,bool空值的处理方法
  4. MATLAB 提取fig文件中数据的通用方法
  5. 关于Excel表格快捷键
  6. 华为开源镜像站体验评测报告
  7. Delphi第三方控件大测评
  8. c语言绝对值函数作用,C语言实现abs和fabs绝对值
  9. python—wordcloud库绘制词云
  10. 【Dongle】【数据库系统原理】模式分解之无损分解