使用Servlet實現圖片下載


package chensi.com;

import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.FileAlreadyExistsException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet HttpServletResponse 下載文件  ,瀏覽器提示我們將圖片下載下來。
 */
@WebServlet("/ResponseDemo7")
public class ResponseDemo7 extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //通過路徑將圖片以流的形式得到
        //通過相對路徑得到絕對路徑
        String path = this.getServletContext().getRealPath("/WEB-INF/classes/爪哇.jpg");
        //有了路徑可以得到輸入流(圖片,要用字節輸出流)
        FileInputStream fis = new FileInputStream(path); //使用絕對路徑將圖片用輸入流變成一個流  fis(圖片)
        //用response創建一個輸出流
        ServletOutputStream outputStream = response.getOutputStream();    
        
        /*我們要將圖片下載下來 */
        //得到要下載的文件名
        String fileName = path.substring(path.lastIndexOf("\\")+1);
        System.out.println(fileName);
        //設置文件的編碼
        fileName = URLEncoder.encode(fileName,"UTF-8");
        //告知客戶端要下載文件
        response.setHeader("content-disposition", "attachment;filename="+fileName);
        response.setHeader("content-type", "image/jpeg");
        
        //執行fileOutputStream的輸出操作
        int len = 1;
        byte[] b = new byte[1024];
        while((len=fis.read(b))!=-1){
            outputStream.write(b, 0, len);
        }
        outputStream.close();
        fis.close();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM