Javascript 最后一个文件完成后的ajax多文件上载警报

Javascript 最后一个文件完成后的ajax多文件上载警报,javascript,java,ajax,jsp,Javascript,Java,Ajax,Jsp,我用jsp和ajax建立了一个多文件上传表单 这是我的密码 jsp Загрузка файлов .td{ 瓦林:顶 } 函数上传(){ var x=document.getElementById(“计划上传”); 对于(var i=0;i

我用jsp和ajax建立了一个多文件上传表单 这是我的密码 jsp


Загрузка файлов
.td{
瓦林:顶
}
函数上传(){
var x=document.getElementById(“计划上传”);
对于(var i=0;i”;
对于(var i=0;i';
}
output.innerHTML+='';
}
函数errorHandlerPlanUpload(事件){
警报(“бббззззззззззззззз
window.opener.location.reload();
window.close()
}
函数abortHandlerPlanUpload(事件){
警报(“аазааааааааааааааа
window.opener.location.reload();
window.close();
}

Загрузить файлы
服务器端java

package com.ieml.servlets.plan;

import java.io.*;
import java.sql.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;

    import org.apache.commons.fileupload.disk.*;
    import org.apache.commons.fileupload.servlet.*;

    import com.ieml.Global;
    import com.ieml.util.*;

    public class MultipleFileUploadServlet extends javax.servlet.http.HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }   

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        {
            //PrintWriter out = response.getWriter();
            String path = com.ieml.Global.getUploadDirectory();
            Integer type= ServletUtilities.getIntParameter(request, "par_type");
            if(path == null)
            {
                ServletUtilities.forwardErrorPage(request, response, "Не указано место хранения файлов");           
                return;         
            }
            if(type==null)
            {

                ServletUtilities.forwardErrorPage(request, response, "Не указан тип плана");            
                return;

            }
            else
            {
                switch(type)
                {
                case 1:path+="/plans/incoming/"; break;
                case 2:path+="/plansMag/incoming/";break;
                case 3:path+="/plansSPO/incoming/";break;
                default:break;
                }
            }

            boolean isMultipart = ServletFileUpload.isMultipartContent(new ServletRequestContext(request));

            if (isMultipart) 
            {
                try
                {
                    FileItemFactory factory = new DiskFileItemFactory();
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    upload.setHeaderEncoding("UTF-8");
                    List<?> items = upload.parseRequest(request);
                    Iterator<?> iter = items.iterator();
                    while(iter.hasNext())
                    {
                        FileItem item = (FileItem)iter.next();                
                        if (!item.isFormField()) 
                        {
                            String fileName = item.getName();
                            if(!fileName.endsWith(".xml") &&!fileName.endsWith(".XML") &&
                                    !fileName.endsWith(".osf") && !fileName.endsWith(".OSF") &&
                                    !fileName.endsWith(".zsf") && !fileName.endsWith(".ZSF")&&
                                    !fileName.endsWith(".plax") && !fileName.endsWith(".PLAX")
                                    )
                            {
                                ServletUtilities.forwardErrorPage(request, response, "Поддерживаемые форматы  файлов: .xml, .osf, .zsf, .plax");
                                return;         
                            }

                            try (Connection conn = Global.getConnection()){

                                File f = new File(path,   fileName);
                                if(f.exists())
                                {
                                    boolean success=f.delete();
                                    if(!success)
                                    {
                                        try {
                                            System.err.println("Не могу удалить файл "+f.getCanonicalPath());
                                        } catch (IOException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }
                                    }
                                }

                                File uploadedFile = new File(path, fileName);
                                try
                                {
                                    item.write(uploadedFile);
                                }
                                catch(Exception e)
                                {
                                    e.printStackTrace();
                                    log(e.getMessage());
                                    ServletUtilities.forwardErrorPage(request, response, "Не могу записать файл.");
                                }
                            }                   

                            break;
                        }
                    }


                }
                catch(SQLException e){
                    e.printStackTrace();
                }
                catch(FileUploadException fue){
                    fue.printStackTrace();
                    log(fue.getMessage());
                    ServletUtilities.forwardErrorPage(request, response, "Не могу принять файл.");              
                }
            }   
        }
    }
package com.ieml.servlets.plan;
导入java.io.*;
导入java.sql.*;
导入java.util.*;
导入javax.servlet.*;
导入javax.servlet.http.*;
导入org.apache.commons.fileupload.*;
导入org.apache.commons.fileupload.disk.*;
导入org.apache.commons.fileupload.servlet.*;
导入com.ieml.Global;
导入com.ieml.util.*;
公共类multipleUploadServlet扩展了javax.servlet.http.HttpServlet{
私有静态最终长serialVersionUID=1L;
受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
doPost(请求、响应);
}   
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException
{
//PrintWriter out=response.getWriter();
字符串路径=com.ieml.Global.getUploadDirectory();
整型=ServletUtilities.getIntParameter(请求,“par_类型”);
if(路径==null)
{
ServletUtilities.forwardErrorPage(请求、响应,“https://www.ServletUtilities.forwardErrorPage”);
返回;
}
if(type==null)
{
ServletUtilities.forwardErrorPage(请求、响应,“https://www.ServletUtilities.forwardErrorPage”);
返回;
}
其他的
{
开关(类型)
{
案例1:路径+=“/计划/传入/”中断;
案例2:路径+=“/plansMag/incoming/”中断;
案例3:路径+=“/plansSPO/incoming/”中断;
默认:中断;
}
}
布尔值isMultipart=ServletFileUpload.isMultipartContent(新的ServletRequestContext(请求));
if(isMultipart)
{
尝试
{
FileItemFactory=new DiskFileItemFactory();
ServletFileUpload upload=新的ServletFileUpload(工厂);
上传。setHeaderEncoding(“UTF-8”);
列表项=upload.parseRequest(请求);
迭代器iter=items.Iterator();
while(iter.hasNext())
{
FileItem=(FileItem)iter.next();
如果(!item.isFormField())
{
字符串文件名=item.getName();
如果(!fileName.endsWith(“.xml”)和&!fileName.endsWith(“.xml”)&&
!fileName.endsWith(“.osf”)和&!fileName.endsWith(“.osf”)&&
!fileName.endsWith(“.zsf”)和&!fileName.endsWith(“.zsf”)&&
!fileName.endsWith(“.plax”)和&!fileName.endsWith(“.plax”)
)
{
ServletUtilities.forwardErrorPage(请求、响应,“Пжжжааааааааааааааааа;
返回;
}
try(Connection conn=Global.getConnection()){
文件f=新文件(路径、文件名);
如果(f.exists())
{
布尔成功=f.delete();
如果(!成功)
{
试一试{
系统错误打印(“ааМааа?
package com.ieml.servlets.plan;

import java.io.*;
import java.sql.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.fileupload.*;

    import org.apache.commons.fileupload.disk.*;
    import org.apache.commons.fileupload.servlet.*;

    import com.ieml.Global;
    import com.ieml.util.*;

    public class MultipleFileUploadServlet extends javax.servlet.http.HttpServlet {
        private static final long serialVersionUID = 1L;

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }   

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
        {
            //PrintWriter out = response.getWriter();
            String path = com.ieml.Global.getUploadDirectory();
            Integer type= ServletUtilities.getIntParameter(request, "par_type");
            if(path == null)
            {
                ServletUtilities.forwardErrorPage(request, response, "Не указано место хранения файлов");           
                return;         
            }
            if(type==null)
            {

                ServletUtilities.forwardErrorPage(request, response, "Не указан тип плана");            
                return;

            }
            else
            {
                switch(type)
                {
                case 1:path+="/plans/incoming/"; break;
                case 2:path+="/plansMag/incoming/";break;
                case 3:path+="/plansSPO/incoming/";break;
                default:break;
                }
            }

            boolean isMultipart = ServletFileUpload.isMultipartContent(new ServletRequestContext(request));

            if (isMultipart) 
            {
                try
                {
                    FileItemFactory factory = new DiskFileItemFactory();
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    upload.setHeaderEncoding("UTF-8");
                    List<?> items = upload.parseRequest(request);
                    Iterator<?> iter = items.iterator();
                    while(iter.hasNext())
                    {
                        FileItem item = (FileItem)iter.next();                
                        if (!item.isFormField()) 
                        {
                            String fileName = item.getName();
                            if(!fileName.endsWith(".xml") &&!fileName.endsWith(".XML") &&
                                    !fileName.endsWith(".osf") && !fileName.endsWith(".OSF") &&
                                    !fileName.endsWith(".zsf") && !fileName.endsWith(".ZSF")&&
                                    !fileName.endsWith(".plax") && !fileName.endsWith(".PLAX")
                                    )
                            {
                                ServletUtilities.forwardErrorPage(request, response, "Поддерживаемые форматы  файлов: .xml, .osf, .zsf, .plax");
                                return;         
                            }

                            try (Connection conn = Global.getConnection()){

                                File f = new File(path,   fileName);
                                if(f.exists())
                                {
                                    boolean success=f.delete();
                                    if(!success)
                                    {
                                        try {
                                            System.err.println("Не могу удалить файл "+f.getCanonicalPath());
                                        } catch (IOException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                        }
                                    }
                                }

                                File uploadedFile = new File(path, fileName);
                                try
                                {
                                    item.write(uploadedFile);
                                }
                                catch(Exception e)
                                {
                                    e.printStackTrace();
                                    log(e.getMessage());
                                    ServletUtilities.forwardErrorPage(request, response, "Не могу записать файл.");
                                }
                            }                   

                            break;
                        }
                    }


                }
                catch(SQLException e){
                    e.printStackTrace();
                }
                catch(FileUploadException fue){
                    fue.printStackTrace();
                    log(fue.getMessage());
                    ServletUtilities.forwardErrorPage(request, response, "Не могу принять файл.");              
                }
            }   
        }
    }
function upload(){
    var x = document.getElementById("plan_upload");
    var noOfFiles = x.files.length;
    var i=0;
    for (i = 0; i < noOfFiles; i++) 
    {
        var file = x.files[i];
        var plan_type='${param.par_type}'
        var formdata = new FormData();
        formdata.append("plan_upload", file);
        var ajax = new XMLHttpRequest();
        ajax.cur_number=(i+1);
        ajax.total_number=x.files.length;
        ajax.addEventListener("error", errorHandlerPlanUpload, false);
        ajax.addEventListener("abort", abortHandlerPlanUpload, false);
        ajax.onreadystatechange = function  ()
        {   
            if (ajax.readyState==4 && ajax.status==200)
            {
                var total_number = ajax.total_number;
                var cur_number= ajax.cur_number;
                alert('i= '+i+' total files '+noOfFiles ) // i always equals  noOfFiles
                    if(i == noOfFiles-1){   //Check if last file
                        alert('Загрузка файлов успешно завершена!');// upload successfull
                        window.opener.location.reload()
                        window.close();
                    }

                }               
            }

        ajax.open("POST", "MultipleFileUpload?par_type="+plan_type);
        ajax.send(formdata);
    }
}
function upload(){
    var x = document.getElementById("plan_upload");
    var noOfFiles = x.files.length;
    for (var i = 0; i < noOfFiles; i++) 
    {
        var file = x.files[i];
        var plan_type='${param.par_type}'
        var formdata = new FormData();
        formdata.append("plan_upload", file);
        var ajax = new XMLHttpRequest();
        ajax.cur_number=(i+1);
        ajax.total_number=x.files.length;
        ajax.addEventListener("error", errorHandlerPlanUpload, false);
        ajax.addEventListener("abort", abortHandlerPlanUpload, false);
        ajax.onreadystatechange = function  ()
        {   
            if (ajax.readyState==4 && ajax.status==200)
            {
                var total_number = ajax.total_number;
                var cur_number= ajax.cur_number;
                if(cur_number==total_number)
                {
                    if(i == noOfFiles-1){   //Check if last file
                        alert('Загрузка файлов успешно завершена!');// upload successfull
                    }
                    window.opener.location.reload()
                    window.close();
                }               
            }
        }  
        ajax.open("POST", "MultipleFileUpload?par_type="+plan_type);
        ajax.send(formdata);
    }
}
function upload()
{
          var x = document.getElementById("plan_upload");
          var numOfFiles= x.files.length;
          for (var i = 0; i < numOfFiles; i++) 
          {
                var file = x.files[i];
                var plan_type='${param.par_type}'
                var formdata = new FormData();
                formdata.append("plan_upload", file);
                var ajax = new XMLHttpRequest();
                ajax.addEventListener("error", errorHandlerPlanUpload, false);
                ajax.addEventListener("abort", abortHandlerPlanUpload, false);
                ajax.onreadystatechange = function  ()
                {   
                    if (ajax.readyState==4 && ajax.status==200)
                    {
                        if(i== numOfFiles-1)
                        {
                            alert('Загрузка файлов успешно завершена!');
                            window.opener.location.reload()
                            window.close();
                        }               
                    }
                }  
                ajax.open("POST", "MultipleFileUpload?par_type="+plan_type,false);
                ajax.send(formdata);
            }
}