天天看點

springmvc 批量下載下傳,

 @RequestMapping(value="/downBatchProductImage")  public void downBatchProductImage(HttpServletRequest request, HttpServletResponse response, Long productId){     String productZipFileName = productId.toString();  //擷取url集合 接口自己填上   List<String> imguri = “”;     File directory = null;     try {        for (int i = 0; i < imguri.size(); i++) {

    ProductAssistController.saveProductFileFromURL(productZipFileName, Constants.ND+imguri.get(i));

   }       } catch (Exception e) {        LOGGER.error(e.getMessage(), e);       }

  directory = new File(productZipFileName);

  if(directory.isDirectory()){      File[] listFiles = directory.listFiles();    ZipOutputStream zos = null;    FileInputStream fis = null;

   try {         zos = new ZipOutputStream(new FileOutputStream(productZipFileName+".zip"));

    for (int i = 0; i < listFiles.length; i++) {            File file = listFiles[i];            fis = new FileInputStream(file);            zos.putNextEntry(new ZipEntry(file.getName()));            int len;            //讀入需要下載下傳的檔案的内容,打包到zip檔案      byte[] buffer = new byte[1024];            while((len = fis.read(buffer))>0) {             zos.write(buffer,0,len);            }           }         if(null != zos){            zos.flush();      zos.close();           }if(null != fis){            fis.close();           }        } catch (Exception e) {         LOGGER.error(e.getMessage(), e);      }finally{         ProductAssistController.delFileOrDirectory(productZipFileName);        }   }      OutputStream out = null;      try {         out = response.getOutputStream();     String filesrc = productZipFileName+".zip";         File file = new File(filesrc);         if(file.exists()){            InputStream fis = new FileInputStream(file);      BufferedInputStream bis = new BufferedInputStream(fis);            BufferedOutputStream bos = new BufferedOutputStream(out);      response.setContentType("application/x-download");      response.setHeader( "Content-disposition","attachment;filename="+URLEncoder.encode(filesrc,"UTF-8"));            int byteRead = 0;      byte[] buffer = new byte[1024];            while ((byteRead = bis.read(buffer,0,1024))!=-1){             bos.write(buffer, 0, byteRead);            }            bos.flush();      fis.close();      bis.close();      out.close();      bos.close();           }         if(file.exists()){            file.delete();         }        } catch (IOException e) {         LOGGER.error(e.getMessage(), e);        }      }

 public static void saveProductFileFromURL(String productId,String imguri){     FileOutputStream fos = null;   BufferedInputStream bis = null;   HttpURLConnection huc = null;   try {       URL url = new URL(imguri);     huc = (HttpURLConnection) url.openConnection();   huc.connect();   bis = new BufferedInputStream(huc.getInputStream());   File file = new File(productId);     if(!file.exists() || !file.isDirectory()){    file.mkdir();   }     fos = new FileOutputStream(file+"/"+FilenameUtils.getName(imguri));     byte[] bufbyte = new byte[1024];   int size = 0;   while ((size = bis.read(bufbyte) )!= -1){    fos.write(bufbyte,0,size);   }     fos.flush();     } catch (Exception e) {    e.printStackTrace();   }finally{        try {     if(fos!=null)     fos.close();     if(bis!=null)     bis.close();     if(huc!=null)     huc.disconnect();        } catch (IOException e) {     e.printStackTrace();    }   }  }

public static void delFileOrDirectory(String productId){   File files = new File(productId);   if(files.exists() && files.isDirectory()){    File[] listFiles = files.listFiles();    for (int i = 0; i < listFiles.length; i++) {     File file = listFiles[i];     if(file.isFile()){      file.delete();     }    }   }   files.delete();  }

//完事。看完評價。bug未測,目測沒問題  @RequestMapping(value="/downBatchProductImage")  public void downBatchProductImage(HttpServletRequest request, HttpServletResponse response, Long productId){     String productZipFileName = productId.toString();     List<String> imguri = RemoteServiceSingleton.getInstance().getDealerProductService().findAllProdUrlByProductId(productId, "");     File directory = null;     try {        for (int i = 0; i < imguri.size(); i++) {

    ProductAssistController.saveProductFileFromURL(productZipFileName, Constants.ND+imguri.get(i));

   }       } catch (Exception e) {        LOGGER.error(e.getMessage(), e);       }

  directory = new File(productZipFileName);

  if(directory.isDirectory()){      File[] listFiles = directory.listFiles();    ZipOutputStream zos = null;    FileInputStream fis = null;

   try {         zos = new ZipOutputStream(new FileOutputStream(productZipFileName+".zip"));

    for (int i = 0; i < listFiles.length; i++) {            File file = listFiles[i];            fis = new FileInputStream(file);            zos.putNextEntry(new ZipEntry(file.getName()));            int len;            //讀入需要下載下傳的檔案的内容,打包到zip檔案      byte[] buffer = new byte[1024];            while((len = fis.read(buffer))>0) {             zos.write(buffer,0,len);            }           }         if(null != zos){            zos.flush();      zos.close();           }if(null != fis){            fis.close();           }        } catch (Exception e) {         LOGGER.error(e.getMessage(), e);      }finally{         ProductAssistController.delFileOrDirectory(productZipFileName);        }   }      OutputStream out = null;      try {         out = response.getOutputStream();     String filesrc = productZipFileName+".zip";         File file = new File(filesrc);         if(file.exists()){            InputStream fis = new FileInputStream(file);      BufferedInputStream bis = new BufferedInputStream(fis);            BufferedOutputStream bos = new BufferedOutputStream(out);      response.setContentType("application/x-download");      response.setHeader( "Content-disposition","attachment;filename="+URLEncoder.encode(filesrc,"UTF-8"));            int byteRead = 0;      byte[] buffer = new byte[1024];            while ((byteRead = bis.read(buffer,0,1024))!=-1){             bos.write(buffer, 0, byteRead);            }            bos.flush();      fis.close();      bis.close();      out.close();      bos.close();           }         if(file.exists()){            file.delete();         }        } catch (IOException e) {         LOGGER.error(e.getMessage(), e);        }      }

 public static void saveProductFileFromURL(String productId,String imguri){     FileOutputStream fos = null;   BufferedInputStream bis = null;   HttpURLConnection huc = null;   try {       URL url = new URL(imguri);     huc = (HttpURLConnection) url.openConnection();   huc.connect();   bis = new BufferedInputStream(huc.getInputStream());   File file = new File(productId);     if(!file.exists() || !file.isDirectory()){    file.mkdir();   }     fos = new FileOutputStream(file+"/"+FilenameUtils.getName(imguri));     byte[] bufbyte = new byte[1024];   int size = 0;   while ((size = bis.read(bufbyte) )!= -1){    fos.write(bufbyte,0,size);   }     fos.flush();     } catch (Exception e) {    e.printStackTrace();   }finally{        try {     if(fos!=null)     fos.close();     if(bis!=null)     bis.close();     if(huc!=null)     huc.disconnect();        } catch (IOException e) {     e.printStackTrace();    }   }  }

public static void delFileOrDirectory(String productId){   File files = new File(productId);   if(files.exists() && files.isDirectory()){    File[] listFiles = files.listFiles();    for (int i = 0; i < listFiles.length; i++) {     File file = listFiles[i];     if(file.isFile()){      file.delete();     }    }   }   files.delete();  }

繼續閱讀