html實現文件下載


步驟

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>計算機網絡課程設計</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <img src="/theCourseDesign/downloadServlet?filename=1.jpg"  style="width: 502.4px;height: 276.8px" />
        <br>
        <a href="/theCourseDesign/downloadServlet?filename=1.jpg">點擊下載</a>
        <br>  
    </body>
    
</html>

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package download;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.WriteListener;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 鄭佳傑
 */
public class DownloadServlet extends HttpServlet {

   
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //獲取請求參數,文件名稱
        String filename=request.getParameter("filename");
        //使用字節輸出流加載文件進內存
        //找到文件服務器路徑
        ServletContext servletContext=this.getServletContext();
        String realpath = servletContext.getRealPath("/Testpicture/"+filename);
        //使用字節流關聯
        FileInputStream fis=new FileInputStream(realpath);
        //設置response的響應頭
        String mimeType=servletContext.getMimeType(filename);
        response.setHeader("content-type", mimeType);
        response.setHeader("content-disposition", "attachment;filename="+filename);
        //將輸入流的數據寫到輸出流
        ServletOutputStream sos=response.getOutputStream();
        byte[] buff=new byte[1024*8];
        int len=0;
        while((len=fis.read(buff))!=-1){
             sos.write(buff, 0, len);
        }
        fis.close();
        sos.close();
    }
    public String getServletInfo() {
        return "Short description";
    }
}


免責聲明!

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



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