@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(); }