java xheditor 上传图片_xheditor上传图片的java实现

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

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

weKMfnQduIKtAAAAABJRU5ErkJggg==

一、使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值