中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Servlet實(shí)現(xiàn)web站點(diǎn)文件下載功能示例

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

1、首先創(chuàng)建一個SharedFilesServlet用于返回一個文件分享界面

package com.hyman.view;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SharedFilesServlet
 */
public class SharedFilesServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SharedFilesServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html; charset=utf-8"); 
        PrintWriter out = response.getWriter();
        out.println("<script type='text/javascript' language='javascript'>"
                + "function fileDown(obj){"
                + "var resourceName = '';"
                + "var buttonId = obj.getAttribute('id');"
                + "var eleName = buttonId.substring(0,3) + 'File';"            
                + "resourceName = document.getElementsByName(eleName)[0].value;"
                + "var url = '/SharingSite/DownFileServlet?fileName=' + resourceName;"
                + "window.location.href=url;"
                + "}"
                + "</script>");
        out.println("<h1>文件共享網(wǎng)站</h1>");
        out.println("mp3資源:<input type='text' name='mp3File' />&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' value ='點(diǎn)擊下載' id='mp3Down' onclick='fileDown(this)' /><br/>");
        out.println("avi資源:<input type='text' name='aviFile' />&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' value ='點(diǎn)擊下載' id='aviDown' onclick='fileDown(this)' /><br/>");
        out.println("jpg資源:<input type='text' name='jpgFile' />&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' value ='點(diǎn)擊下載' id='jpgDown' onclick='fileDown(this)' /><br/>");
        out.println("txt資源:<input type='text' name='txtFile' />&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' value ='點(diǎn)擊下載' id='txtDown' onclick='fileDown(this)' /><br/>");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(request, response);
    }

}

2、然后創(chuàng)建一個控制器,來判斷是否盜鏈,以及處理文件下載邏輯:

package com.hyman.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class DownFileServlet
 */
public class DownFileServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DownFileServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html; charset=utf-8");
        String referer = request.getHeader("Referer");
        if (referer == null || !referer.startsWith("http://localhost:8080/SharingSite/")) {
            response.sendRedirect("/SharingSite/AntiPirateLink");
        } else {
            String fileName = request.getParameter("fileName");
            response.setHeader("Content-Disposition", "attachment; filename="+fileName);
            String path = this.getServletContext().getRealPath("/resources/"+fileName);
            FileInputStream fis = null;
            OutputStream os = null;
            try {
                fis = new FileInputStream(new File(path));
                byte buff[] = new byte[1024];
                int len = 0;
                os = response.getOutputStream();
                while ((len = fis.read(buff)) > 0) {
                    os.write(buff, 0, len);
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException();
            } finally {
                if (os != null) os.close();
                if (fis != null) fis.close();
            }
        }
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(request, response);
    }

}

3、創(chuàng)建一個AntiPirateLink返回盜鏈提醒界面,并在10秒后自動刷新跳轉(zhuǎn)到SharedFilesServlet

package com.hyman.view;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AntiPirateLink
 */
public class AntiPirateLink extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AntiPirateLink() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html; charset=utf-8");
        PrintWriter out = response.getWriter();
        out.println("<script type='text/javascript' language='javascript'>"
                + "var i = 10;"
                + "function showTime(){"
                + "if(i > 0) {document.getElementById('time').innerHTML = '請不要盜鏈下載... ' + i +' 秒后自動跳轉(zhuǎn)到下載首頁...';"
                + "i--;}"
                + "}"
                + "setInterval('showTime()',1000);"
                + "</script>");
        out.println("<span id='time'></span>");
        response.setHeader("Refresh", "10; url=/SharingSite/SharedFilesServlet");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doGet(request, response);
    }

}

【分析】文件下載部分實(shí)現(xiàn)步驟:

【分析】文件下載部分實(shí)現(xiàn)步驟:

1、response.setHeader("Content-Disposition", "attachment; filename="+fileName);在http回復(fù)消息頭中的Content-Disposition中指明下文件的文件名;
2、調(diào)用this.getServletContext().getRealPath("/resources/"+fileName);函數(shù)獲取到文件的全路徑;
3、使用文件流FileInputStream將文件讀入到服務(wù)器內(nèi)存,重要要用到緩存處理,然后再調(diào)用response的getOutputStream()方法獲得向客戶端寫文件的輸出文件流;

來自: http://www.cnblogs.com/page-of-Hyman/p/4321523.html

標(biāo)簽: isp 服務(wù)器 服務(wù)器內(nèi)存

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:通過java來獲取系統(tǒng)的信息

下一篇:HtmlUnit模擬頁面提交一個form