struts2 + ajaxfileupload.js 多图上传

来源:互联网 发布:广东省发票打印软件 编辑:程序博客网 时间:2024/05/22 17:25
原有的ajaxfileupload.js 只支持单个图片上传

在它的基础上做了一点修改,支持多图上传

修改点:
1.jsp 页面的 input 加入 multiple
可以支持上传多个文件的选中

<input type="file" id="file" name="file" multiple />

2.action 中 file 和 fileFileName 改成数组
   private File[] file;
   private String[] fileFileName;


3.struts
struts.xml文件中只有以下是和上传相关,其中 struts.multipart.maxSize 是上传总文件大小限制

<constant name="struts.multipart.maxSize" value="9000000"/>
 <package name="struts2" namespace="/upload" extends="json-default">
        <action name="fileUploadAction" class="action.FileAction">
        </action>

    </package>



源程序:

1.struts2

<constant name="struts.multipart.maxSize" value="9000000"/> <package name="struts2" namespace="/upload" extends="json-default">        <action name="fileUploadAction" class="action.FileAction">        </action>    </package>



2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">        <title>Insert title here</title>       <script type="text/javascript" src="./js/jquery-1.8.3.min.js"></script>        <script type="text/javascript" src="./js/ajaxfileupload.js"></script>        <script type="text/javascript">    function ajaxFileUpload()    {                $("#loading")        .ajaxStart(function(){            $(this).show();        })//开始上传文件时显示一个图片        .ajaxComplete(function(){            $(this).hide();        });//文件上传完成将图片隐藏起来                $.ajaxFileUpload        (            {                url:'upload/fileUploadAction.action',//用于文件上传的服务器端请求地址                secureuri:false,//一般设置为false                fileElementId:'file',//文件上传空间的id属性  <input type="file" id="file" name="file" />                dataType: 'json',//返回值类型 一般设置为json                success: function (data, status)  //服务器成功响应处理函数                {                      // var list = data;                           for(var i=0;i<data.length;i++)                        {                              alert(data[i]);                        }                },                error: function (data, status, e)//服务器响应失败处理函数                {                    alert(e);                }            }        )                return false;    }    </script>    </head>    <body>        <img src="loading.gif" id="loading" style="display: none;">               <br />        <input type="file" id="file" name="file" multiple />        <input type="button" value="上传" onclick="return ajaxFileUpload();">    </body></html>


3.action

package action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.List;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class FileAction extends ActionSupport {    private File[] file;    private String[] fileFileName;    private String fileFileContentType;    private String message = "你已成功上传文件";        public String getMessage() {        return message;    }    public void setMessage(String message) {        this.message = message;    }    public File[] getFile() {return file;}public void setFile(File[] file) {this.file = file;}    public String[] getFileFileName() {return fileFileName;}public void setFileFileName(String[] fileFileName) {this.fileFileName = fileFileName;}public String getFileFileContentType() {        return fileFileContentType;    }    public void setFileFileContentType(String fileFileContentType) {        this.fileFileContentType = fileFileContentType;    }    @SuppressWarnings("deprecation")    @Override    public String execute() throws Exception {                String path = ServletActionContext.getRequest().getRealPath("/upload");            File[] f = this.getFile();            System.out.println(f.length);           List<String> imageList = new ArrayList<String>();            for(int i=0;i<f.length;i++)            {             if(this.fileFileName[i].endsWith(".exe")){                     message="对不起,你上传的文件格式不允许!!!";                     return CommonUtil.jsonOut("error");                 }            try            {                        FileInputStream inputStream = new FileInputStream(f[i]);            System.out.println(this.getFileFileName());            FileOutputStream outputStream = new FileOutputStream(path + "/"+ this.fileFileName[i]);            byte[] buf = new byte[1024];            int length = 0;            while ((length = inputStream.read(buf)) != -1) {            outputStream.write(buf, 0, length);            }            inputStream.close();            outputStream.flush();            }catch (Exception e)            {            e.toString();            }                        imageList.add(path + "/"+ this.fileFileName[i]);            }                                                   return CommonUtil.jsonOut(imageList);    }}



0 0
原创粉丝点击