Java將pdf文件根據網絡路徑url,下載到本地

package com.zl.vtax.studygarden.controller;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RequestMapping("/test")
@RestController
public class TestDownController {

	/**
	 * @param pdfNetUrl(pdf網路全路徑)
	 * @param pdfName(pdf名稱)
	 * @param savePath(保存的路徑)
	 * @throws Exception
	 */
	@GetMapping("/downPdf")
	public void downPdf(String pdfNetUrl,String pdfName,String savePath) throws Exception{
		 URL url = new URL(pdfNetUrl);
	        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
	        //設置超時間
	        conn.setConnectTimeout(5*1000);
	        //防止屏蔽程序抓取而返回403錯誤
	        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
	        InputStream inputStream = conn.getInputStream();
	        byte[] getData = readInputStream(inputStream);
	        //pdf保存路徑
	        File saveDir = new File(savePath);
	        if(!saveDir.exists()){
	            saveDir.mkdir();
	        }
	        File file = new File(saveDir+File.separator+pdfName);
	        FileOutputStream fos = new FileOutputStream(file);
	        fos.write(getData);
	        if(fos!=null){
	            fos.close();
	        }
	        if(inputStream!=null){
	            inputStream.close();
	        }
	}
	
	 /**
     * 從輸入流中獲取字節數組
     * @param inputStream
     * @return
     * @throws IOException
     */
    public static  byte[] readInputStream(InputStream inputStream) throws IOException {
        byte[] buffer = new byte[1024];
        int len = 0;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        while((len = inputStream.read(buffer)) != -1) {
            bos.write(buffer, 0, len);
        }
        bos.close();
        return bos.toByteArray();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章