Servlet 实现文件的下载和上传
1.文件下载
实现简单的文件下载主要有以下2步:
1.读取服务器上的资源文件(包括:获取文件所在目录(绝对路径),文件名)
2.设置响应格式,编码以及HTTP响应头 (HTTP响应头 “content-disposition” 为:"attachment;)
3.向用户浏览器输出资源文件。
2.文件下载实例
下面是一个文件下载的Servlet,用户访问此 Servlet 既可以下载一张图片
获取资源文件的绝对路径可以用 :this.getServletContext().getRealPath(" 文件名 ")
来获取。
FileDownload.java 文件如下:
package fileDownload;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/FileDownload")
public class FileDownload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path=this.getServletContext().getRealPath("/Download/图片.jpg"); 获取当前web应用下"Upload"文件夹的绝对路径
String filename=path.substring(path.lastIndexOf("\\")+1);
response.setContentType("text/html;charset=utf-8"); //设置响应格式及编码
response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode(filename,"UTF-8")); //文件名是中文需要用URLEncoder.encode()方法给其重新编为Utf-编码
InputStream in=null;
OutputStream