最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)從網(wǎng)絡下載多個文件

 更新時間:2019年07月18日 14:22:43   作者:錦衣何須夜行  
這篇文章主要為大家詳細介紹了java實現(xiàn)從網(wǎng)絡下載多個文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下

java從網(wǎng)絡下載多個文件,供大家參考,具體內(nèi)容如下

首先是打包下載多文件,即打成壓縮包在下載。

其次 別處的資源:可以是別的服務器,可以是網(wǎng)上的資源,當然也可以是本地的(更簡單)

最后:一次性下載,一次性下載多個文件

三步走:

一、先將 “別處” 需要下載的文件下載到服務器,然后將文件的路徑改掉

二、然后將服務器上的文件打成壓縮包

三、下載這個壓縮包

//下載
 @RequestMapping("/download01")
 public void downloadImage(String tcLwIds, HttpServletRequest request, HttpServletResponse response) throws Exception{
 boolean dflag = false;
 String[] paths = tcLwIds.split(",");
 File [] file1 = new File[paths.length];
 DownLoadImageUtil imageUtils = new DownLoadImageUtil(); 
 if(paths.length > 1){
 for (int i = 0; i < paths.length; i++) {
 String imagepath=paths[i];
 imageUtils.makeImage(imagepath); //將url的圖片下載到本地,這個方法在下邊
 //修改為圖片存放路徑
 file1[i] = new File("D:/upload/"+imagepath.substring(imagepath.lastIndexOf("/")));
 }
 filesDown(request, response, file1);//這是下邊的一個方法
 }
 }
 
 //將下載到 服務器 的圖片 放入壓縮包
 public void filesDown(HttpServletRequest request,HttpServletResponse response,File[] file1 ) throws Exception {
 Random r=new Random();
 String tmpFileName =r.nextInt(10000) +"downImage.zip"; 
 String upath=request.getRealPath("/");
 upath=upath.substring(0,upath.length()-1);
 upath=upath.substring(0,upath.lastIndexOf("\\"));
 //服務地址的存放路徑
 String FilePath = upath+"/ROOT/data/";
 File f=new File(FilePath);
 if(!f.exists()){ //路徑不存在就創(chuàng)建
 FileUtil.createDir(FilePath);
 }
 
  byte[] buffer = new byte[1024]; 
  String strZipPath = FilePath + tmpFileName; //路徑加文件名
  try { 
   ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath)); 
   for (int i = 0; i < file1.length; i++) { 
    FileInputStream fis = new FileInputStream(file1[i]); 
    out.putNextEntry(new ZipEntry(file1[i].getName())); 
    //設(shè)置壓縮文件內(nèi)的字符編碼,不然會變成亂碼 
    out.setEncoding("GBK"); 
    
    int len; 
    // 讀入需要下載的文件的內(nèi)容,打包到zip文件 
    while ((len = fis.read(buffer)) > 0) { 
     out.write(buffer, 0, len); 
    } 
    out.closeEntry(); 
    fis.close();
   } 
   out.close(); 
   //下載的服務地址根據(jù)實際情況修改
   boolean dflag = downloafile(request, response,"http://localhost:8080/data/"+tmpFileName);
   //將服務器上 壓縮前的源文件 刪除
   for (int i = 0; i < file1.length; i++) { 
 if (file1[i].isFile()) {
  file1[i].delete();
 }
   }
   //將服務器上的壓縮包刪除
   File fileZip=new File(strZipPath);
   fileZip.delete();
  } catch (Exception e) { 
  e.printStackTrace();
  } 
 } 
 
 //寫到本地
 public boolean downloafile(HttpServletRequest request,HttpServletResponse response, String path) {
 String name = path.substring(path.lastIndexOf("/")+1);
 String filename = DownLoadImageUtil.encodeChineseDownloadFileName(request, name);
 response.setHeader("Content-Disposition", "attachment; filename=" + filename + ";");
 boolean flag = false;
 try {
 URL url = new URL(path);
   InputStream inStream = url.openConnection().getInputStream();
 BufferedInputStream in = new BufferedInputStream(inStream);
 ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
 byte[] temp = new byte[1024];
 int size = 0;
 while ((size = in.read(temp)) != -1) {
 out.write(temp, 0, size);
 }
 in.close();
 ServletOutputStream os = response.getOutputStream();
 os.write(out.toByteArray());
 os.flush();
 os.close();
 flag = true;
 } catch (Exception e) {
 logger.error("違法信息下載...出錯了");
 }
 return flag;
 }

makeImage(); 方法(如果是服務器上的圖片,可以省略這一步,直接打包)

/** 
  * 下載圖片,并按照指定的路徑存儲 
  * @param bean 
  * @param filePath 
  */ 
 public void makeImage( String filePath) { 
  // 網(wǎng)絡請求所需變量 
  try { 
   //new一個URL對象 
   URL url = new URL(filePath); 
   //打開鏈接 
   HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
   //設(shè)置請求方式為"GET" 
   conn.setRequestMethod("GET"); 
   //超時響應時間為5秒 
   conn.setConnectTimeout(5 * 1000); 
   //通過輸入流獲取圖片數(shù)據(jù) 
   InputStream inStream = conn.getInputStream(); 
   
   ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
   //創(chuàng)建一個Buffer字符串 
   byte[] buffer = new byte[1024]; 
   //每次讀取的字符串長度,如果為-1,代表全部讀取完畢 
   int len = 0; 
   //使用一個輸入流從buffer里把數(shù)據(jù)讀取出來 
   while( (len=inStream.read(buffer)) != -1 ){ 
    //用輸出流往buffer里寫入數(shù)據(jù),中間參數(shù)代表從哪個位置開始讀,len代表讀取的長度 
    outStream.write(buffer, 0, len); 
   } 
   byte []data=outStream.toByteArray();
   //先將圖片從url下載到服務器的D:/upload/
   File imageFile = new File("D:/upload/"+filePath.substring(filePath.lastIndexOf("/"))); 
   //創(chuàng)建輸出流 
   FileOutputStream foutStream = new FileOutputStream(imageFile); 
   foutStream.write(data); 
   //關(guān)閉輸出流 
   foutStream.close();
   inStream.close();
   
  } catch (MalformedURLException e) { 
   e.printStackTrace(); 
  } catch (IOException e) { 
   e.printStackTrace(); 
  } 
 } 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java開發(fā)命名規(guī)范總結(jié)

    java開發(fā)命名規(guī)范總結(jié)

    包名的書寫規(guī)范 (Package)推薦使用公司或機構(gòu)的頂級域名為包名的前綴,目的是保證各公司/機構(gòu)內(nèi)所使用的包名的唯一性。包名全部為小寫字母,且具有實際的區(qū)分意義
    2013-10-10
  • Spring Cloud接口突然變慢的解決方案

    Spring Cloud接口突然變慢的解決方案

    在Spring Cloud項目中,接口突然變慢可能是由多種原因造成的,本文給大家介紹了一些可能的原因以及相應的解決方案,通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2024-01-01
  • Java面試題沖刺第二十六天--實戰(zhàn)編程

    Java面試題沖刺第二十六天--實戰(zhàn)編程

    這篇文章主要為大家分享了最有價值的三道java實戰(zhàn)面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java中的PowerMock使用實踐

    Java中的PowerMock使用實踐

    這篇文章主要介紹了Java中的PowerMock使用實踐,@PrepareForTest和@RunWith是成對出現(xiàn)的,一般@RunWith(PowerMockRunner.class),@PrepareForTest的值是引用的靜態(tài)方法或私有方法的類,需要的朋友可以參考下
    2023-12-12
  • SpringBoot項目中分頁插件PageHelper無效的問題及解決方法

    SpringBoot項目中分頁插件PageHelper無效的問題及解決方法

    這篇文章主要介紹了解決SpringBoot項目中分頁插件PageHelper無效的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Java 中的vector和list的區(qū)別和使用實例詳解

    Java 中的vector和list的區(qū)別和使用實例詳解

    在大家還沒有了解vector,list,deque的知識之前,我先給大家介紹下stl,本文重點給大家介紹vector和list的區(qū)別及使用,感興趣的的朋友一起看看吧
    2017-09-09
  • java幾種排序算法的實現(xiàn)及簡單分析

    java幾種排序算法的實現(xiàn)及簡單分析

    這篇文章主要介紹了java幾種排序算法的實現(xiàn)及簡單分析,實例分析了插入排序、希爾排序、選擇排序等常用排序算法,并分析了各個算法的優(yōu)劣,需要的朋友可以參考下
    2015-05-05
  • Java中輸入輸出方式的簡單示例

    Java中輸入輸出方式的簡單示例

    Java語言的輸入輸出功能是十分強大而靈活的,美中不足的是看上去輸入輸出的代碼并不是很簡潔,因為你往往需要包裝許多不同的對象,下面這篇文章主要給大家介紹了關(guān)于Java中輸入輸出方式的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • btrace定位生產(chǎn)故障的方法示例

    btrace定位生產(chǎn)故障的方法示例

    這篇文章主要介紹了btrace定位生產(chǎn)故障的方法示例,文中通過示例代碼介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • springboot中使用Feign整合nacos,gateway進行微服務之間的調(diào)用方法

    springboot中使用Feign整合nacos,gateway進行微服務之間的調(diào)用方法

    這篇文章主要介紹了springboot中使用Feign整合nacos,gateway進行微服務之間的調(diào)用方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03

最新評論

天水市| 广安市| 太保市| 临澧县| 葫芦岛市| 额尔古纳市| 莆田市| 定日县| 凌源市| 凯里市| 福建省| 醴陵市| 巴彦淖尔市| 金湖县| 湖南省| 温泉县| 萝北县| 长葛市| 河池市| 宁都县| 武陟县| 庄浪县| 平罗县| 红河县| 泸水县| 阳春市| 丰顺县| 谷城县| 绥阳县| 北碚区| 沁阳市| 香格里拉县| 夏邑县| 延寿县| 清涧县| 湘潭市| 申扎县| 长春市| 尼木县| 镇安县| 榕江县|