java xheditor 上传图片_xheditor上传图片的java实现
最近一个项目中因为框架的原因,很多文本编辑器都不兼容,最后找到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实现相关推荐
- xheditor form java_xheditor 上传图片 Jfinal处理 出现异常
五杀联盟 发布于 2014/10/29 09:48 阅读 1K+ 收藏 0 [ERROR]-[Thread: http-listener-1(4)]-[com.jfinal.core.ActionHa ...
- java相册_精致小巧的java相册制作方法
本文实例为大家分享了java相册制作方法,供大家参考,具体内容如下 注: 1)html上的图片是静态指定的.当更新了新的图片时必须手工更新.所以使用Servlet读取本地images中的所有图片,动态 ...
- 广东java工资一般多少_广东java工资待遇,广东java工资一般多少,广东java工资底薪最低多少...
广东java工资待遇,广东java工资一般多少,广东java工资底薪最低多少 首页 > java > 广东java工资待遇 作者:镀金池 发布时间:2018-12-22 11:20 在 ...
- Java学习路线图,如何学习Java事半功倍?
作为一个初学者想掌握Java并不是很容易,Java本身是具有一定难度的,虽然说兴趣这东西可以让我们学习不累,但是有多少人学习是因为兴趣,或者有多少人知道自己的兴趣在哪?所以我很明确的告诉你学习这事本来 ...
- matlab中调用java代码_Matlab中调用第三方Java代码
在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...
- java pdf插件下载_免费java pdf控件
云原生的概念和理论体系非常的完备,but talk is cheap , show me the code ! 但是作为一名程序员,能动手的咱绝对不多BB,虽然talk并不cheap , 能跟不同层次 ...
- in the java search_Search API – Using scrolls in Java - Elasticsearch Java API 手册
Using scrolls in Java 一般搜索请求都是返回一"页"数据,无论数据量多大都一起返回给用户,Scroll API可以允许我们检索大量数据(甚至全部数据).Scro ...
- centos java yum_CentOS7 使用yum命令安装Java SDK
CentOS 6.X 和 7.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的Java 平台. 安装方式: 1.输入以下命令,以 ...
- java基础(十三)-----详解内部类——Java高级开发必须懂的
java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...
- 利用java虚拟机的工具jmap分析java内存情况
2019独角兽企业重金招聘Python工程师标准>>> 有时候碰到性能问题,比如一个java application出现out of memory,出现内存泄漏的情况,再去修改bug ...
最新文章
- 最新+经典+论文+代码+多版本+神器+https://paperswithcode.com/
- Android进阶笔记07:Android之MVC 理解
- cpio用法详细说明
- VTK:PolyData之PointInsideObject
- Xcode6 itunes完美打包api 方法
- 在MFC的picture控件中如何显示Mat图
- 木桶布局 原理与实现
- 大学c语言基本程序,一个大学C语言试题的简单实现--员工信息管理程序
- milk and news paper(transfer)
- PHP实现8进制转10进制,php 实现进制相互转换
- [转载] python numpy np.exp()函数
- Event Filter Table Entry
- IDEA Translation插件,有道智云(有道翻译)应用ID,密钥申请教程
- FDD LTE B1是什么
- STM32F103驱动无刷直流电机应用思路
- Dnsmasq+ipset+iptables基于域名的流量管理
- 罗马盘、大力盘、大圣盘等搜索网站,简单绕过付费
- php tp6 错误接管分析,ThinkPHP5 异常接管
- 【探索】excel VBA的任意坐标画线问题
- 通过百度语音生成音频文件