Struts2 urlrewrite + kindeditor 上传图片时request为null问题

采用struts2  加上了  urlrewrite  后 web.xml 里面配置变成了这样

 

 

 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  <!-- 重新必须加的 -->
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
  <!-- <dispatcher>INCLUDE </dispatcher>  -->
 </filter-mapping>

 

 但是问题就来了 url 重写 是实现了 但是 /* 是不能完成kindeditor  当中的upload_json.jsp上传的

 

upload_json.jsp 的上传  是需要 *.action

 

 

怎么解决呢 办法来了

 

重写一个jsp用作上传

 

 

如下:

 

<%@ page language="java" pageEncoding="GBK"%>
<%@page
 import="java.util.*,java.io.*,org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper,java.util.concurrent.locks.*"%>
<%
 //Struts2  请求 包装过滤器   
 MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
 // 获得上传的文件名    
 String fileName = wrapper.getFileNames("imgFile")[0];
 //获得未见过滤器    
 File file = wrapper.getFiles("imgFile")[0];
 //----------- 重新构建上传文件名----------------------   
 final Lock lock = new ReentrantLock();
 String newName = null;
 lock.lock();
 try {
  //加锁为防止文件名重复    
  newName = System.currentTimeMillis()
    + fileName.substring(fileName.lastIndexOf("."),
      fileName.length());
 } finally {
  lock.unlock();
 }
 //------------ 锁结束 -------------   
 //获取文件输出流    
 FileOutputStream fos = new FileOutputStream(request.getSession()
   .getServletContext().getRealPath("/")
   + "ke_upload\\" + newName);
 //设置 KE 中的图片文件地址    
 String newFileName = request.getScheme() + "://"
   + request.getServerName() + ":" + request.getServerPort()
   + request.getContextPath() + "/ke_upload/" + newName;
 byte[] buffer = new byte[1024];
 //获取内存中当前文件输入流    
 InputStream in = new FileInputStream(file);
 try {
  int num = 0;
  while ((num = in.read(buffer)) > 0) {
   fos.write(buffer, 0, num);
  }
 } catch (Exception e) {
  e.printStackTrace(System.err);
 } finally {
  in.close();
  fos.close();
 }
 //发送给KE    
 out
   .println("<html><head><title>Insert Image</title><meta http-equiv='content-type' content='text/html; charset=gbk'/></head><body>");
 out.println("<script type='text/javascript'>");
 out.println("parent.parent.KE.plugin['image'].insert('"
   + wrapper.getParameter("id") + "','" + newFileName + "','"
   + wrapper.getParameter("imgTitle") + "','"
   + wrapper.getParameter("imgWidth") + "','"
   + wrapper.getParameter("imgHeight") + "','"
   + wrapper.getParameter("imgBorder") + "','"
   + wrapper.getParameter("align") + "');</script>");
 out.println("</body></html>");
%>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值