如何将网站上的文件让别人下载呢?
最简单的方式就是直接把文件的链接地址放到页面上,如一个a链接,点击该链接直接访问文件,即会下载。
经过测试,不提供文件地址,访问一个servlet,返回该文件地址也可以下载文件。这种方式的好处隐藏了文件的真实地址,还可以在下载前对下载行为进行判断,如是否登录。对于没有登录的用户可以提示他登录不会下载文件。在servlet中下载文件的文件名依据web.xml中的url-pattern决定。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>down</display-name> <servlet> <servlet-name>inst1</servlet-name> <servlet-class>com.lh.down.test</servlet-class> </servlet> <servlet-mapping> <servlet-name>inst1</servlet-name> <url-pattern>/inst1.exe</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
1 package com.lh.down; 2 3 import java.io.IOException; 4 5 import javax.servlet.RequestDispatcher; 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 public class test extends HttpServlet { 12 @Override 13 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 14 RequestDispatcher dispatcher = req.getRequestDispatcher("/jsp/inst.exe"); 15 dispatcher .forward(req, resp); 16 } 17 18 @Override 19 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 20 doGet(req, resp); 21 } 22 }
访问url-pattern,即会下载文件。