2016-07-17 6 views
1

私はExcelシートに保存されている数千のレコードを持っています。これらのレコードをデータベースにアップロードする必要があります。現在、アップロード用にSpringコントローラクラスを使用しています。 BufferedOutputStreamFileReaderクラスを使用しているので、データをデータベースにアップロードするときに、パーセントを含むJqueryのプログレスバーを表示する必要があります。Javaのレコードをデータベースにアップロードする際のJqueryの進行状況バー

Like below screen.

Link here.

私のサンプルコード。

String rootPath = request.getSession().getServletContext().getRealPath("/"); 
    File dir = new File(rootPath + File.separator + "uploadedfile"); 
    if (!dir.exists()) { 
     dir.mkdirs(); 
    } 

    File serverFile = new File(dir.getAbsolutePath() + File.separator + form.getEmpFile().getOriginalFilename()); 

    try { 
     try (InputStream is = form.getEmpFile().getInputStream(); 
       BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile))) { 
      int i; 
      //write file to server 
      while ((i = is.read()) != -1) { 
       stream.write(i); 
      } 
      stream.flush(); 
     } 
    } 
    catch (IOException e) { 
     model.addAttribute("msg", "failed to process file because : " + e.getMessage()); 
    } 
    String[] nextLine; 
    try (FileReader fileReader = new FileReader(serverFile); CSVReader reader = new CSVReader(fileReader, ';', '\'', 1);) { 
     while ((nextLine = reader.readNext()) != null) { 
      for (int i = 0; i < nextLine.length; i++) { 
       nextLine[i] = nextLine[i].trim(); 
       if (!nextLine[i].equals("")) { 
        String[] data = nextLine[i].split(","); 

答えて

0

多分これは助けることができる:

の1- コントローラ側:

$.ajax({ 
       url : 'uploadExcel', 
       type : 'POST', 
       data : new FormData(this), 
       beforeSend : function() { 
                $('#valid').attr("disabled", true); 
                // I call my loop function 
                loop(); 
               }, 
       success : function(data) { 
                 $('#valid').attr("disabled", false); 
               } 
              }); 


function loop() {    
        $.ajax({ 

         url : 'getpercent', 

         type : 'GET', 

         success : function(response) { 
          count = response; 
           // this function updates my progress bar with the new value 
           change(count); 
           ********* 
         } 

        }); 
        var time = 2000; 

       if(count < 100){ 
        setTimeout(loop, time); 
       } 


       } 
       ; 
:JavaScriptの側

public class ExtractController { 
    ******** 
    // I created a global variable here 
    int percentage = 0; 
    Workbook workbook; 

@RequestMapping(value ="/uploadExcel", method = RequestMethod.POST) 
public @ResponseBody String uploadExcel(Model model, @RequestParam("excelfile") MultipartFile excelfile, 
     HttpServletResponse response) { 
********** 
    try { 
     int i = 0; 
********* 
      while (i <= worksheet.getLastRowNum()) { 
      percentage = Math.round(((i * 100)/worksheet.getLastRowNum())); 
    Row row = worksheet.getRow(i++); 
    } 
    ********* 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
return "extract"; 
} 

@RequestMapping(value = "/getpercent", method = RequestMethod.GET) 
    public @ResponseBody String getPerc(@RequestParam("param") String param) { 
************ 

// you return the value of the global variable when the action is called 
    return percrentage; 

    } 
} 

の1-

関連する問題