📄 downloadservlet.java~16~
字号:
package com.xiaobai.bbsupload;import javax.servlet.http.HttpServlet;import javax.servlet.http.*;import javax.servlet.*;import java.io.*;import java.io.File;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: 下载的servlet</p> * @author 1232Maxine * @version 1.0 */public class downloadServlet extends HttpServlet { public downloadServlet() { } private static final String CONTENT_TYPE = "application/x-msdownload";//下载头 //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String picdir =request.getContextPath()+request.getParameter("picdir"); if (picdir == null) { picdir = ""; } picdir = picdir; String filename=request.getParameter("fileName"); //PrintWriter out = response.getWriter(); File file = new File("uploadtext/uploadfiles/xiaobai11185712179370bizhi.jpg");//检查文件是否存在 if (!file.exists()) { this.getServletContext().getRequestDispatcher(response.encodeURL("/error.jsp?errorinfo=此文件过期,已经不存在!")).forward(request, response); return ; } long filelength = file.length(); InputStream inStream=new FileInputStream(picdir);//设置输出的格式 response.reset(); response.setContentType(CONTENT_TYPE); //设置下载头 response.setContentLength((int)filelength); response.addHeader("Content-Disposition","attachment; filename=\"" + toUtf8String(filename) + "\"");//循环取出流中的数据 byte[] b = new byte[100]; int len; while((len=inStream.read(b)) >0) ///每次读出100字节 response.getOutputStream().write(b,0,len); //输出到响应流中 inStream.close(); if(file!=null){ file=null; } } //Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } //Clean up resources public void destroy() { } private String toUtf8String(String s) {///转换成UTF-8 StringBuffer sb = new StringBuffer(); for (int i=0;i<s.length();i++) { char c = s.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { byte[] b; try { b = Character.toString(c).getBytes("utf-8"); } catch (Exception ex) { System.out.println(ex); b = new byte[0]; } for (int j = 0; j < b.length; j++) { int k = b[j]; if (k < 0) k += 256; sb.append("%" + Integer.toHexString(k). toUpperCase()); } } } return sb.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -