多文件上传

现象:
实现多文件上传:
这里写图片描述

解决办法:
1:在页面提交表单加上如下代表表单中有文件上传
这里写图片描述

2:在表单中添加文件上传的选择框
这里写图片描述

3:在js中动态添加文件上传框的数量
这里写图片描述

4:在action中属性驱动接收文件上传,多文件这里使用数组接收。
这里写图片描述

5:action中写表单提交的方法处理文件上传,这里文件位置放在配置文件中,便于修改!
这里写图片描述

6:其中 页面添加了这个属性每个文件上传的选择框将支持多选!
这里写图片描述

7:从配置文件中获取参数的方法
这里写图片描述

----------------------
//从配置文件中读取值
    public static Object getParamFromProp(String key){  
        InputStream is=MyUtils.class.getClassLoader().getResourceAsStream("parameters.properties");  
        BufferedReader br= new BufferedReader(new InputStreamReader(is));  
        Properties props = new Properties();  
        try {  
            props.load(br);  
            return props.get(key);
        } catch (IOException e) {
            e.printStackTrace();
        }  
        return null;
    } 
------------------action方法-------
    private File[] file ;   
    private String[] fileFileName;  
    private String[] fileContentType; 
    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[] getFileContentType() {
        return fileContentType;
    }
    public void setFileContentType(String[] fileContentType) {
        this.fileContentType = fileContentType;
    }
    //邮箱消息的添加
    public void addEmailMessage() throws IOException{
        //获取配置文件中的文件存放路径
        String fileurl=(String) MyUtils.getParamFromProp("Mailpath"); 
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        StringBuffer sb=new StringBuffer();
            File[] files=getFile();
            if (files != null && files.length > 0) {
                for (int i = 0; i < files.length; i++) {
           long a=new Date().getTime(); //设置时间戳用于文件名字
                    FileOutputStream fos = new FileOutputStream(fileurl + "\\" + a+getFileFileName()[i]);
                    FileInputStream fis = new FileInputStream(files[i]);
                    byte[] buffer = new byte[1024];
                    int len = 0;
                    try {
                        while ((len = fis.read(buffer)) > 0) {
                            fos.write(buffer, 0, len);
                        }
                        if(i==files.length-1){
                            sb.append(a+getFileFileName()[i]);
                        }else{
                            sb.append(a+getFileFileName()[i]).append(",");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    fis.close();
                    fos.close();
                }
            }
        em.setAttach(sb.toString());
        Date date=new Date();
        em.setMailDate(date);
        em.setFlags(0);
        em.setMsgicode(null);
        em.setRetransmission(0);
        logger.debug("后台邮箱消息的新建"+em);
        emailService.saveEmailMessage(em);
        response.getWriter().write("邮箱发送成功!!!");
    }

----------------------页面的动态添加-----------
    //邮箱附件的增加
    function addattach(){
             var html = $("<br><input type='file' name='file' multiple='multiple'>");
             var button = $("<input type='button' name='button' value='删除'>");
             $("#addattach").append(html).append(button);
                button.click(function()
                {
                    html.remove();
                    button.remove();
                });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值