国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java通過http網(wǎng)絡url下載文件

這篇具有很好參考價值的文章主要介紹了java通過http網(wǎng)絡url下載文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

java通過http網(wǎng)絡url下載文件

    @Test
    public void test3() throws ParseException {
        String fileUrl = "http://*****/123.pdf";
        String savePath = "C:\\Users\\HHH\\Desktop\\文件\\123.pdf";

        try {
            URL url = new URL(fileUrl);
            InputStream inputStream = url.openStream();

            Path outputPath = Path.of(savePath);
            Files.copy(inputStream, outputPath, StandardCopyOption.REPLACE_EXISTING);

            System.out.println("File downloaded successfully.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

上面代碼報錯,修改URL url = new URL(fileUrl);,使用URL url = new URL(new URI(fileUrl).toASCIIString());

    @Test
    public void test3() throws ParseException {
        String fileUrl = "http://*****/123.pdf";
        String savePath = "C:\\Users\\HHH\\Desktop\\文件\\123.pdf";

        try {
            URL url = new URL(new URI(fileUrl).toASCIIString());
            InputStream inputStream = url.openStream();

            Path outputPath = Path.of(savePath);
            Files.copy(inputStream, outputPath, StandardCopyOption.REPLACE_EXISTING);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

原因:

URL url = new URL(fileUrl); 和 URL url = new URL(new URI(fileUrl).toASCIIString()); 之間有一些微小的區(qū)別。
URL url = new URL(fileUrl);:這種方式直接使用 URL 類的構(gòu)造函數(shù)創(chuàng)建一個 URL 對象。它假設 fileUrl 是一個合法的 URL 字符串,并不對其進行任何修改或編碼。如果 fileUrl 含有特殊字符或非法字符,可能會導致 MalformedURLException 異常。
URL url = new URL(new URI(fileUrl).toASCIIString());:這種方式先通過 URI 類創(chuàng)建一個 URI 對象,然后再將其轉(zhuǎn)換為 ASCII 字符串,最后使用 URL 類的構(gòu)造函數(shù)創(chuàng)建一個 URL 對象。這種方式會對 fileUrl 進行編碼,將其中的非 ASCII 字符轉(zhuǎn)換為 ASCII 編碼形式。這可以確保 URL 字符串的合法性。例如,使用這種方式可以正確處理包含中文或特殊字符的 URL。
總而言之,URL url = new URL(fileUrl); 直接創(chuàng)建 URL 對象,不對 URL 字符串進行編碼。而 URL url = new URL(new URI(fileUrl).toASCIIString()); 先通過 URI 對象將 URL 字符串編碼為 ASCII 形式,然后再創(chuàng)建 URL 對象。使用這種方式可以確保 URL 的合法性,尤其是處理包含非 ASCII 字符的 URL。

上面是本地保存到本地,以下是前端彈出保存框,可以選擇保存位置

    @RequestMapping("/download")
    public void download(String fileName, HttpServletRequest request, HttpServletResponse response) throws Exception {
        try {
            URL url = new URL(new URI("https://*****/asd.pdf").toASCIIString());
            InputStream inputStream = url.openStream();

            fileName = URLEncoder.encode(fileName, "UTF-8").replace("+", "%20"); // 處理文件名中的空格和特殊字符

            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

            Path tempFile = Files.createTempFile("temp", ".pdf"); // 創(chuàng)建臨時文件
            Files.copy(inputStream, tempFile, StandardCopyOption.REPLACE_EXISTING);

            Files.copy(tempFile, response.getOutputStream()); // 將臨時文件寫入響應輸出流

            response.flushBuffer();
            tempFile.toFile().delete(); // 刪除臨時文件
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*        
		
		try {
            URL url = new URL("https://asdasd/asd.pdf");
            URLConnection conn = url.openConnection();
            String fileName = "123asd.pdf";

            response.setContentType(conn.getContentType());
            response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

            InputStream inputStream = conn.getInputStream();
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

            Path tempFile = Files.createTempFile("temp", "");
            Files.copy(bufferedInputStream, tempFile, StandardCopyOption.REPLACE_EXISTING);

            Files.copy(tempFile, response.getOutputStream());
            response.flushBuffer();

            tempFile.toFile().delete();
            bufferedInputStream.close();
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }*/

前端通過網(wǎng)絡url下載文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>

		</style>
	</head>
	<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
	<script>
		function btn() {
			//要下載的文件的url地址
			var url="";
			//創(chuàng)建一個XMLHttpRequest對象
			const xhr = new XMLHttpRequest()
			//使用 xhr.open('GET', url) 打開一個GET請求,將URL作為請求的目標地址。 
			xhr.open('GET', url)
			//指定返回的響應類型為Blob對象
			xhr.responseType = 'blob'
			//發(fā)送請求
			xhr.send()
			//發(fā)送請求后的回調(diào)
			xhr.onload = function () {
				//響應結(jié)果賦值給blob
			  const blob = xhr.response
			  //創(chuàng)建a標簽
			  const a = document.createElement('a')
			  //將下載文件的數(shù)據(jù)作為URL賦值給 <a> 標簽的 href 屬性
			  a.href = URL.createObjectURL(blob)
			  //下載文件名
			  a.download = 'test.pdf'
			  //點擊創(chuàng)建的a標簽
			  a.click()
			}
		}
	</script>
	<body>
		<button onclick="btn()">aaaaa</button>
	</body>
</html>

文章來源地址http://www.zghlxwxcb.cn/news/detail-658473.html

function btn() {
   var url = ("https://***/0974f0f.pdf");   
   //創(chuàng)建一個XMLHttpRequest對象,使用 `xhr.open('GET', url, true)` 打開一個GET請求,將URL作為請求的目標地址。
   var xhr = new XMLHttpRequest();
   xhr.open('GET', url, true); // 也可以使用POST方式,根據(jù)接口
   //將 `xhr.responseType` 設置為"blob",指定返回的響應類型為Blob對象
   xhr.responseType = "blob";
   // 當請求完成時觸發(fā)。在該回調(diào)函數(shù)中,首先檢查請求的狀態(tài)是否為200(即成功),如果是,則繼續(xù)處理
   xhr.onload = function() {
      // 請求完成
      if (this.status === 200) {
         // 返回200,從響應中獲取Blob對象,并創(chuàng)建一個FileReader對象
         var blob = this.response;
         var reader = new FileReader();
         //將Blob對象轉(zhuǎn)換為base64格式的數(shù)據(jù),以便將其放入 `<a>` 標簽的 `href` 屬性中
         reader.readAsDataURL(blob); 
         //在 `reader.onload` 回調(diào)函數(shù)中,創(chuàng)建一個 `<a>` 標簽用于下載,設置下載屬性和鏈接的URL
         reader.onload = function(e) {
            // 轉(zhuǎn)換完成,創(chuàng)建一個a標簽用于下載
            var a = document.createElement('a');
            a.download = '123.pdf';
            a.href = e.target.result;
            $("body").append(a); // 修復firefox中無法觸發(fā)click
            a.click();
            $(a).remove();
         }
      }
   };
   // 發(fā)送ajax請求
   xhr.send()
}

到了這里,關(guān)于java通過http網(wǎng)絡url下載文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • js 通過window.open(url)下載文件,修改文件名

    在頁面調(diào)用

    2024年02月15日
    瀏覽(162)
  • Python學習筆記:Requests庫安裝、通過url下載文件

    Python學習筆記:Requests庫安裝、通過url下載文件

    在pipy或者github下載,通常是個zip,解壓縮后在路徑輸入cmd,并運行以下代碼 ?安裝完成后,輸入python再輸入import requests得到可以判斷時候完成安裝 ?2.通過url下載文件 使用的是urllib模塊

    2024年02月10日
    瀏覽(86)
  • java http請求url有空格,通過unicode方法處理

    在Java中,可以通過Unicode編碼來處理URL中的空格等特殊字符,將其轉(zhuǎn)換為%xx的形式。下面是一個處理示例: 以上代碼中,我們使用了URLEncoder.encode()方法將URL中的特殊字符進行編碼,并將所有的+替換為%20,表示空格的編碼。使用時,只需要傳入需要編碼的URL即可,例如: 輸出

    2024年02月12日
    瀏覽(30)
  • java通過url讀取文件內(nèi)容

    ?使用java獲取遠程服務器的文件,并讀取內(nèi)容(該文件可以通過Url直接獲?。?使用的時候稍作修改,將inputLine賦值,然后使用,否則直接在下面調(diào)用為nul,因為循環(huán)過后inputLine變成null?。。。ò葱凶x取)

    2024年02月12日
    瀏覽(43)
  • C/C++ 通過HTTP實現(xiàn)文件上傳下載

    C/C++ 通過HTTP實現(xiàn)文件上傳下載

    WinInet(Windows Internet)是 Microsoft Windows 操作系統(tǒng)中的一個 API 集,用于提供對 Internet 相關(guān)功能的支持。它包括了一系列的函數(shù),使得 Windows 應用程序能夠進行網(wǎng)絡通信、處理 HTTP 請求、FTP 操作等。WinInet 提供了一套完整的網(wǎng)絡通信工具,使得開發(fā)者能夠輕松地構(gòu)建支持網(wǎng)絡功

    2024年02月19日
    瀏覽(25)
  • Java實現(xiàn)文件上傳到服務器本地,并通過url訪問

    Java實現(xiàn)文件上傳到服務器本地,并通過url訪問

    Java實現(xiàn)文件上傳到服務器本地,并通過url訪問 有個需求,前端上傳文件,需要用開關(guān)的方式同時支持上傳七牛和服務器本地,方便不同的用戶需求合理分配資源。本篇主要介紹文件上傳到本地,然后通過url訪問。 首先想到的就是可以通過SpringBoot通常訪問靜態(tài)資源的方式,當

    2024年02月03日
    瀏覽(25)
  • Java 根據(jù)網(wǎng)絡地址URL獲取文件

    系統(tǒng)需要根據(jù)提供的文件地址URL獲取該文件,代碼實現(xiàn)如下:

    2024年02月11日
    瀏覽(22)
  • vue如何通過$http的post方法請求下載二進制的Excel文件

    使用此function 使用此function,?test.vue instanceName: \\\"exportExcel\\\",導出excel文件 instanceName: \\\"downloadLog\\\",下載.log后綴的txt文件 封裝接口 代碼中使用:

    2024年01月18日
    瀏覽(33)
  • 計算機網(wǎng)絡 應用層上 | 域名解析系統(tǒng)DNS 文件傳輸協(xié)議FTP,NFS 萬維網(wǎng)URL HTTP HTML

    計算機網(wǎng)絡 應用層上 | 域名解析系統(tǒng)DNS 文件傳輸協(xié)議FTP,NFS 萬維網(wǎng)URL HTTP HTML

    之前我們講運輸層的時候已經(jīng)講了運輸層可以給不同進程之間通信,但我們還需要應用層原因是,許多 應用需要多個進程之間相互配合完成,所以應用層進程用來約束這些配合! 每個應用層協(xié)議用來解決一個問題 應用層的許多協(xié)議都是基于客戶服務器方式 客戶是請求方,服

    2024年01月24日
    瀏覽(59)
  • Java通過文件流和文件地址下載文件

    Java通過文件流和文件地址下載文件

    如何使用 MultipartFile 進行文件上傳、下載到本地,并返回保存路徑呢: 用于在 Spring Boot 應用中獲取文件流,然后處理上傳的文件,將文件保存到指定目錄并返回保存的文件路徑。下面對代碼的各個部分進行簡要介紹: 上傳目錄設置 :在這個示例中, UPLOAD_DIR 常量用于定義上

    2024年02月12日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包