JQUERY AJAX+STRUTS2批量上传文件

ACTION代码

 

package ul;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Date;

import org.apache.struts2.ServletActionContext;

import ccme.sys.base.BaseAction;
import ccme.sys.json.JSONUtil;

public class FileUploadAction extends BaseAction
{
    privatestatic final long serialVersionUID = 572146812454l ;
    privatestatic final int BUFFER_SIZE = 5 * 1024  ;
  
    private FilemyFile;
    privateString contentType;
    privateString fileName;
    privateString imageFileName;
    privateString caption;
    Stringnewfilename;
    Stringgroupid;
  
 
    privatestatic void copy(File src, File dst) {
       try {
          InputStream in = null ;
          OutputStream out = null ;
           try{               
            
            FileOutputStream f=newFileOutputStream(dst);
              in = new BufferedInputStream( new FileInputStream(src),BUFFER_SIZE);
              out = new BufferedOutputStream( f, BUFFER_SIZE);
               byte [] buffer = new byte [BUFFER_SIZE];
              
               while (in.read(buffer) > 0 ) {
                  out.write(buffer);
              }
           
          } finally {
               if ( null != in) {
                  in.close();
              }
               if ( null != out) {
                  out.close();
              }
          }
      } catch (Exception e) {
          e.printStackTrace();
      }
   }
  
    privatestatic String getExtention(String fileName) {
       int pos = fileName.lastIndexOf(".");
       return fileName.substring(pos);
   }

@Override
   public Stringexecute()   
    
  PrintWriter out = null;
  FilePojo filePojo=newFilePojo();
  try { 
    this.getResponse().setContentType("text/html;charset=utf-8"); 
    out= this.getResponse().getWriter();
    
    imageFileName= new Date().getTime() + getExtention(fileName);
    FileimageFile = newFile(ServletActionContext.getServletContext().getRealPath("/UploadImages")+"/"+imageFileName);
    copy(myFile,imageFile);
    
    
    filePojo.setFilename(imageFileName);
    filePojo.setGroupid(this.getGroupid());
    filePojo.setFileszie(imageFile.length());
    filePojo.setResult("true"); 
   }
   catch(Exception e)
   {
    e.printStackTrace();
    filePojo.setResult("error");
   }
   out.print(JSONUtil.bean2json(filePojo)); 
   out.close();
  return null;
   }
  
   public voidsetMyFileContentType(String contentType) {
      this .contentType = contentType;
  }
 
   public voidsetMyFileFileName(String fileName) {
      this .fileName = fileName;
  }
     
   public void setMyFile(FilemyFile) {
      this .myFile = myFile;
  }
 
   public StringgetImageFileName() {
      return imageFileName;
  }
 
   public String getCaption(){
      return caption;
  }

public void setCaption(String caption) {
      this .caption = caption;
  }

public String getNewfilename() {
  return newfilename;
 }
 
 public void setNewfilename(String newfilename){
  this.newfilename =newfilename;
 }

public String getGroupid() {
  return groupid;
 }

public void setGroupid(String groupid) {
  this.groupid = groupid;
 }
   
}

 

struts2配置文件

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache SoftwareFoundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 <include file="struts-default.xml"/>
 <constantname="struts.i18n.encoding" value="utf-8" />
 <include file="conf/struts/*.xml"/>
 
 <constantname="struts.multipart.saveDir" value="/tmp"/>   <!--配置临时文件目录 -->
 <constantname="struts.multipart.maxSize"value="10000000"/>  <!--配置上传文件大小 -->
 <constantname="struts.action.extension"value="action"></constant>
 
 
 <package name ="fileUploadDemo"extends ="struts-default">
       <action name ="fileUpload" class="ul.FileUploadAction">
           <interceptor-ref name="fileUploadStack"/>   
       </action>
   </package>
</struts>

JSP页面

需要:jquery.min.js,ajaxfileupload.js

 

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="s"uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title></title>

<script type="text/javascript"src="<%=request.getContextPath()%>/sys/jquery.min.js"></script>
<script type="text/javascript"src="<%=request.getContextPath()%>/sys/ajaxfileupload.js"></script></head>
<body>
 <input type='button' value='增加'onClick='addFile()'/>
 <input type='button' value='提交'onClick='uploadFile()'/>
 <divid="mydiv">
 </div>
</body>
<script type="text/javascript">
var formNum=0;
function addFile()
{
 formNum = formNum + 1;
 var file="<spanid='span_"+formNum+"'>";
 file=file+"文件:<input type='file'id='file_" + formNum +"' name='myFile'/>";
 file=file+"<input type='button'value='删除' id='delfile'οnclick='dlefile(this)'/><br>";
 file=file+"</span>";
 $("#mydiv").append(file);
}

function dlefile(obj)
{
  $(obj).parent().remove();
}

function uploadFile()
{
 var filelist=$(":file");
 for(vari=0;i<filelist.length;i++)
  ajaxFileUpload(filelist[i]); 
}

function ajaxFileUpload(myFile)
{
 vargroupid=myFile.id.split("_")[1]; 
 $.ajaxFileUpload
 (
  {
   url:'fileUpload.action',
   secureuri:false,
   fileElementId:myFile.id,
   dataType :'json',
   data:{"newfilename": "ccc123","groupid": groupid},
   success:function (data, status)
   {
    $("#span_"+groupid).html("上传状态:"+data.result+"|服务器文件名称:"+data.filename+"|文件大小:"+data.fileszie+"<br>");//remove();
   },
   error:function (data, status, e)
   {
    alert("error");
   }
   
  }
 );
    returnfalse;
  }
</script>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值