1.导包
首先要导入工具包commons-fileupload.jar和commons-io.jar. 如下图:
2.上传界面:
1.首先from的enctype必须使用:multipart/form-data
2.然后input的type="file" 如下图所示。
3.使用post方法提交
3.上传文件代码实现
//创建工厂实现类
FileItemFactory fileItemFactory=new DiskFileItemFactory();
ServletFileUpload servletFileUpload =new ServletFileUpload(fileItemFactory);
try {
//解析上传的信息
List<FileItem> list = servletFileUpload.parseRequest(req);
//遍历上传的信息--解析表单内的内容
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
//普通表单信息
System.out.println("表单属性" + fileItem.getFieldName());
System.out.println("表单value值" + fileItem.getString());
}else { //文件信息
System.out.println("表单属性" + fileItem.getFieldName());
System.out.println("上传的文件名:" + fileItem.getName());
//将上传的文件保存到 C:\up\file文件下
fileItem.write(new File("C:\\up\\file\\" + fileItem.getName()));
}
}catch (Exception e) {
e.printStackTrace();
}
4.文件下载代码实现
String DownFileName="测试文件.txt";
InputStream resourceAsStream = null;
ServletOutputStream outputStream=null;
ServletContext servletContext = getServletContext();
//获取要下载的文件
String mimeType = servletContext.getMimeType("C:\\up\\file\\" + DownFileName);
//设置文件在下载时候的名字
resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(DownFileName, "UTF-8"));
//设置下载文件类型
resp.setContentType(mimeType);
//读取要下载的文件内容
resourceAsStream = new FileInputStream("C:\\up\\file\\" + DownFileName);
outputStream = resp.getOutputStream();
//实现浏览器下下载功能
IOUtils.copy(resourceAsStream, outputStream);
return;
5.成果展示
1.上传界面:
2.文件下载界面: