⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 downloadservlet.java

📁 openacs source for CPE wan management
💻 JAVA
字号:
/*
 * DownloadServlet.java
 *
 * Created on Antradienis, 2008, Vasario 19, 18.12
 */

package org.openacs;

import java.io.*;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author Administrator
 * @version
 */
public class DownloadServlet extends HttpServlet {
    
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String p = request.getPathInfo();
        int s = Math.max(p.lastIndexOf('\\'), p.lastIndexOf('/'));
        if (s != -1) p = p.substring(s);
        
        try {
            /*
            String fwbase = getInitParameter("org.openacs.fwbase");
            if (fwbase == null) fwbase = "c:/firmware/";
            String osname = (String)System.getProperty("os.name");
            if (!osname.startsWith("Windows") && fwbase.charAt(1)==':') {
                fwbase = fwbase.substring(2);
            }
            */
            String fwbase = Util.getFirmwarePath(this);
            FileInputStream fin = new FileInputStream (fwbase+p);
            String ct = getInitParameter("defaultContentType");
            response.setContentType(ct != null ? ct : "application/octet-stream");
            
            response.setContentLength(fin.available());
            Logger.getLogger(getClass().getName()).log(Level.INFO, "uri="+request.getRequestURI()+", size="+fin.available()+", ct="+ct);
            ServletOutputStream out = response.getOutputStream();
            /*
            ByteBuffer head = ByteBuffer.allocate(24);
            head.order(ByteOrder.BIG_ENDIAN);
            head.putLong (0x32574952455f5350L);
            head.putInt(1);
            head.putInt(0);
            head.putInt(0);
            head.putInt(fin.available());
            out.write(head.array());
            */
            byte [] buffer = new byte [8192];
            int r;
            while ((r = fin.read(buffer)) != -1) {
                out.write(buffer, 0, r);
            }
            fin.close();
            out.close();
        } catch (FileNotFoundException e) {
            Logger.getLogger(getClass().getName()).log(Level.INFO, "404 uri="+request.getRequestURI());
            response.setStatus(response.SC_NOT_FOUND);
        }
  }
    
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -