java 通過url下載文件到瀏覽器

前端傳來url地址與文件名,下載文件到瀏覽器

  • 代碼 (這裏模擬,直接在代碼裏寫了url,可以拼接在url後進行截取)
  • 請求接口
      @GetMapping("/findOperatorBarVO2")
      @ApiOperation(value = "下載")
      public void findOperatorCharBar2(HttpServletResponse response)throws IOException{
          toDownload(response);
      }
    
  • 下載方法
         public static void toDownload( HttpServletResponse response)  {
          ServletOutputStream out = null;
          InputStream inputStream = null;
    
          try {
              //路徑
              String path = "http://10.202.61.66:11111/KEDFSFile/M00/00/1E/Cso9Ql7Z61CAZtQcAAAGqKgzHds335.txt";
              // 取得文件的後綴名。
              String ext = path.substring(path.lastIndexOf(".") + 1).toLowerCase();
              //文件名
              String pdfName = "問題."+ext;
              // 獲取外部文件流
              URL url = new URL(path);
              HttpURLConnection conn = (HttpURLConnection) url.openConnection();
              conn.setConnectTimeout(3 * 1000);
              //防止屏蔽程序抓取而返回403錯誤
              conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
              inputStream = conn.getInputStream();
              /**
               * 輸出文件到瀏覽器
               */
              int len = 0;
              // 輸出 下載的響應頭,如果下載的文件是中文名,文件名需要經過url編碼
              response.setContentType("application/x-download");
              response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(pdfName, "UTF-8"));
              response.setHeader("Cache-Control", "no-cache");
              out = response.getOutputStream();
              byte[] buffer = new byte[1024];
              while ((len = inputStream.read(buffer)) > 0) {
                  out.write(buffer, 0, len);
              }
              out.flush();
          } catch (Exception e) {
    
              e.printStackTrace();
          } finally {
              if (inputStream != null) {
                  try {
                      inputStream.close();
                  } catch (Exception e) {
                  }
              }
              if (out != null) {
                  try {
                      out.close();
                  } catch (Exception e) {
                  }
              }
          }
      }
    
    
  • 前端代碼
          window.location.href = "http://localhost:9090/xx/evaOperator/findOperatorBarVO2";
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章