1. 程式人生 > >java實現檔案下載的兩種方式

java實現檔案下載的兩種方式

public HttpServletResponse download(String path, HttpServletResponse response) {
        try {
            // path是指欲下載的檔案的路徑。
            File file = new File(path);
            // 取得檔名。
            String filename = file.getName();
            // 取得檔案的字尾名。
            String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
 
            // 以流的形式下載檔案。
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 設定response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
    }
 
    public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {
        // 下載本地檔案
        String fileName = "Operator.doc".toString(); // 檔案的預設儲存名
        // 讀到流中
        InputStream inStream = new FileInputStream("c:/Operator.doc");// 檔案的存放路徑
        // 設定輸出的格式
        response.reset();
        response.setContentType("bin");
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
        // 迴圈取出流中的資料
        byte[] b = new byte[100];
        int len;
        try {
            while ((len = inStream.read(b)) > 0)
                response.getOutputStream().write(b, 0, len);
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public void downloadNet(HttpServletResponse response) throws MalformedURLException {
        // 下載網路檔案
        int bytesum = 0;
        int byteread = 0;
 
        URL url = new URL("windine.blogdriver.com/logo.gif");
 
        try {
            URLConnection conn = url.openConnection();
            InputStream inStream = conn.getInputStream();
            FileOutputStream fs = new FileOutputStream("c:/abc.gif");
 
            byte[] buffer = new byte[1204];
            int length;
            while ((byteread = inStream.read(buffer)) != -1) {
                bytesum += byteread;
                System.out.println(bytesum);
                fs.write(buffer, 0, byteread);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

參考地址:https://blog.csdn.net/pangqiandou/article/details/53234586

https://blog.csdn.net/wangfeng8720/article/details/6588679

相關推薦

java實現二分查詢-方式

二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。 起初在資料結構中學習遞迴時實現二分查詢,實際上不用遞迴也可以實現,畢竟遞迴是需要開闢額外的空間的來輔助查詢。本文就介紹兩種方法 二分查詢演算法思想 有序的序列,每次都是以序列的中間位置的數來與待查詢的關鍵字進行比

java實現檔案下載方式

public HttpServletResponse download(String path, HttpServletResponse response) {        try {            // path是指欲下載的檔案的路徑。            Fi

java實現檔案下載的三方式

public HttpServletResponse download(String path, HttpServletResponse response) {         try {          

JAVA載入配置檔案方式

一: package days_01; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; impor

JAVA解析Excel檔案方式 --Poi技術

目前有兩種比較主流的技術解析Excel檔案,這裡我講解的是Poi技術的實現。 話不多話,Poi包裡有4個主要的類,包括: Workbook------工作表,通過WorkbookFactory的create(FileInputStream fis)方法獲取, Sheet--

java實現同步的幾方式(總結)

副本 增刪改 否則 都是 fin ret 語義 value art 為何要使用同步? java允許多線程並發控制,當多個線程同時操作一個可共享的資源變量時(如數據的增刪改查), 將會導致數據不準確,相互之間產生沖突,因此加入同步鎖以避免在該線程沒有完成操

CSS3實現動畫的方式

logs del pin 屬性 cnblogs ase http eve 括號 1、設置transition設置過渡,添加transform設置形狀,形成動畫效果,如下: .divadd { transition: All 0.4s ease-in-out;

css實現透明的方式及其區別

白色 class 子節點 new 透明度 區別 方式 ron pre 一、opacity:0~1 值越高,透明度越低,下面為示例 選擇器{ opacity:0.5 } 選擇器匹配到的節點們,包括節點們的孩子節點,都會實現%50透明,另 0.5 可直

java Web釋出的方式

一種是直接呼叫API: Endpoint.publish("http://192.168.14.117:8888/java6ws/Java6WS", new Java6WS()); Endpoint.publish是一個後臺執行緒,一旦釋出了就會一直等待處理Web服務的請求,只有當mai

beans.xml引入.properties檔案方式

方法一: <context:property-placeholder location="classpath:config.properties"/> 方法二: <bean class="org.springframework.beans.factory.con

python 讀取wav 音訊檔案方式

  python 中,常用的有兩種可以讀取wav音訊格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfile as sf 5 6 fs,data = wavfile.read(

java 傳遞引數的方式

                Java中沒有指標,所以也沒有引用傳遞了,僅僅有值傳遞不過可以通過物件的方式來實現引用傳遞 類似j

Java獲取年月日的方式

方式一: Calendar calendar = Calendar.getInstance(); System.out.println(calendar.get(Calendar.YEAR)); Sy

前端資料流檔案下載方式

1、直接使用get請求方式進行下載: window.open(`${url}?${qs.stringify(param)}`, '_blank'); 2、使用form 表單post請求進行下載: const postDownloadFile = (action, param) =>

HttpClient 傳輸檔案方式

1. org.apache.commons.httpclient.HttpClient package com.skd.util; import com.skd.common.Constant; import com.skd.common.Event; import org.apa

js 圖片base64轉file檔案方式

        最近專案中需要實現把圖片的base64編碼轉成file檔案的功能,然後再上傳至伺服器。起初是直接通過new File()的方式進行轉換,在各個主流的瀏覽器基本上都支援,Android也沒問題,但是在ios系統埋了個坑,ios11.4以下的系統上傳失敗。定位bu

實現AJAX的方式

第一種通過XMLHttpRequest實現: 需要手動建立XMLHttpRequest物件,較繁瑣。 js程式碼: <script type="text/javascript"> function getComments(){ //獲得評論框內

KEIL / MDK生成BIN檔案方式,直接複製就能用

在After Build/Rebuild選項卡中,勾選 "Run # 1",在後面輸入框寫入bin檔案生成方式,如下 圖1 第一種方式:設定絕對路徑(個人實踐過,沒有成功,不知道為什麼) "D:\Program Files\MDK516\ARM\ARMCC\bin\

不用自定義,ImageView實現圓角的方式

不多廢話,直切主題。 方案一、利用CardView巢狀ImageView實現圓角。具體實現方式見文章《CardView的使用》 方案二、利用Glide的RequestOptions.bitmapTransform來實現,很簡單,具體如下: RoundedCorn

Java實現克隆的三方式

1. 淺克隆      2. 深克隆     3. 利用序列化實現深克隆 1、淺複製(淺克隆)這種淺複製,其實也就是把被複制的這個物件的一些變數值拿過來了。最後生成student2還是一個新的物件。 public class