中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中怎么從網絡下載多個文件

發布時間:2021-08-07 14:53:15 來源:億速云 閱讀:159 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關java中怎么從網絡下載多個文件,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

具體內容如下

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

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

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

三步走:

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

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

三、下載這個壓縮包

//下載 @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()){ //路徑不存在就創建 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()));     //設置壓縮文件內的字符編碼,不然會變成亂碼     out.setEncoding("GBK");         int len;     // 讀入需要下載的文件的內容,打包到zip文件     while ((len = fis.read(buffer)) > 0) {      out.write(buffer, 0, len);     }     out.closeEntry();     fis.close();   }    out.close();    //下載的服務地址根據實際情況修改   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) {   // 網絡請求所需變量   try {    //new一個URL對象    URL url = new URL(filePath);    //打開鏈接    HttpURLConnection conn = (HttpURLConnection)url.openConnection();    //設置請求方式為"GET"    conn.setRequestMethod("GET");    //超時響應時間為5秒    conn.setConnectTimeout(5 * 1000);    //通過輸入流獲取圖片數據    InputStream inStream = conn.getInputStream();       ByteArrayOutputStream outStream = new ByteArrayOutputStream();    //創建一個Buffer字符串    byte[] buffer = new byte[1024];    //每次讀取的字符串長度,如果為-1,代表全部讀取完畢    int len = 0;    //使用一個輸入流從buffer里把數據讀取出來    while( (len=inStream.read(buffer)) != -1 ){     //用輸出流往buffer里寫入數據,中間參數代表從哪個位置開始讀,len代表讀取的長度     outStream.write(buffer, 0, len);    }    byte []data=outStream.toByteArray();   //先將圖片從url下載到服務器的D:/upload/   File imageFile = new File("D:/upload/"+filePath.substring(filePath.lastIndexOf("/")));    //創建輸出流    FileOutputStream foutStream = new FileOutputStream(imageFile);    foutStream.write(data);    //關閉輸出流    foutStream.close();   inStream.close();     } catch (MalformedURLException e) {    e.printStackTrace();   } catch (IOException e) {    e.printStackTrace();   }  }

看完上述內容,你們對java中怎么從網絡下載多個文件有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文水县| 南京市| 余干县| 武定县| 中西区| 乌恰县| 岳普湖县| 澎湖县| 永仁县| 宝鸡市| 金昌市| 太保市| 玉溪市| 德化县| 太仆寺旗| 恭城| 依兰县| 勐海县| 高雄市| 博爱县| 尼木县| 通化市| 铜鼓县| 汨罗市| 吴堡县| 疏附县| 怀来县| 南皮县| 海兴县| 呼图壁县| 手机| 三穗县| 大渡口区| 慈利县| 平舆县| 保康县| 宣恩县| 芜湖县| 清徐县| 工布江达县| 蓝山县|