Servlet实现文件的上传和下载

从Servlet 3开始,文件上传变得简单许多。
文件的上传:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
//@MultipartConfig中location属性是文件上传后的位置
@MultipartConfig(location = "D://")
@WebServlet("/upload")
public class Upload extends HttpServlet {
	private static final long serialVersionUID = -5478858676605062491L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
		// 可以用request.getPart()方法获得名为myfile的上传附件
		Part part = request.getPart("myfile");
		String submittedFileName = part.getSubmittedFileName();
		//3.1规范中可以用Part对象的getSubmittedFileName()方法获得上传的文件名
		System.out.println(submittedFileName);
		part.write(submittedFileName);
		System.out.println("上传完成");
    }
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

文件的下载:

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

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/download")
public class Download extends HttpServlet {
	private static final long serialVersionUID = -5478858676605062491L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
				//接收前台传过来的文件名
		 	  String name = request.getParameter("name");
		 	  response.setHeader("Content-Disposition","attachment; filename="+name);
		 	  //要下载的文件从这里下载,如果文件没有则会报FileNotfound异常
		      String realPath = "D://";
		      File file = new File(realPath,name);
		      ServletOutputStream out = response.getOutputStream();
		      FileInputStream fis= new FileInputStream(file);
		      int len = 0;
		      while((len = fis.read())!=-1) {
		      	out.write(len);
		      	out.flush();
		      }
		      fis.close();
		      out.close();
		      System.out.println("写出完毕");
	
    }
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

html页面:

<form action="/jd20/upload" method="post" enctype="multipart/form-data"><br>
		<input type="text" name="username"><br>
		<input type="file" name="myfile"><br>
		<button>上传</button>
	</form>
	<a href="/jd20/download?name=1.jpeg">下载</a>

这就是Servlet3以后比较简单的文件和上传.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值