JavaWeb实现文件上传与下载实例详解
1. 实现文件上传
1.1. HTML表单
首先需要编写一个表单用于上传文件:
<form action="FileUploadServlet" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
需要注意的是,表单的enctype
属性必须设置为multipart/form-data
,以支持文件上传。
1.2. Servlet后台处理
然后需要编写一个Servlet来处理文件的上传:
@WebServlet("/FileUploadServlet")
@MultipartConfig
public class FileUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Part part = request.getPart("file");
String fileName = part.getSubmittedFileName();
InputStream inputStream = part.getInputStream();
File file = new File(fileName);
FileOutputStream outputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
while (len != -1) {
outputStream.write(buffer, 0, len);
len = inputStream.read(buffer);
}
outputStream.close();
inputStream.close();
response.getWriter().write("上传成功");
}
}
这里使用了Servlet 3.0中的@MultipartConfig
注解来支持文件上传,使用了request.getPart()
方法获取了上传的文件,然后将文件写入磁盘即可。
2. 实现文件下载
2.1. HTML链接
首先需要编写一个链接用于下载文件:
<a href="FileDownloadServlet?fileName=test.txt">下载文件</a>
2.2. Servlet后台处理
然后需要编写一个Servlet来处理文件的下载:
@WebServlet("/FileDownloadServlet")
public class FileDownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fileName = request.getParameter("fileName");
File file = new File(fileName);
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8"));
InputStream inputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
while (len != -1) {
outputStream.write(buffer, 0, len);
len = inputStream.read(buffer);
}
outputStream.close();
inputStream.close();
}
}
这里需要设置Content-Disposition
响应头为attachment
,浏览器会将该文件以附件形式下载,另外,需要使用URLEncoder.encode()
方法对文件名进行编码,以支持中文文件名的下载。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb实现文件上传与下载实例详解 - Python技术站