JavaWeb学习—文件上传
一、 上传和下载文件的介绍:
1.上传和下载文件时的http内容是以表单的形势存在的,每个表单以boundary分隔符
二、文件上传
- 文件上传的界面
(1)、页面上要有一个from标签,请求为post请求
(2)、form标签要有一个encType属性,且值为multipart/form-data
(3)、在form标签中使用input type = file获取上传文件
(4)、编写服务器代码接收,处理上传数据
下面展示一些 。
<form action="***" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="username" /> <br>
头像:<input type="file" name="photo" > <br>
<input type="submit" value="上传">
</form>
- Servlet程序
我们这次使用一个第三方提供的jar包:commons-fileupload-1.2.1.jar和commons-io-1.4.jar。相应的jar包可到以下链接下载或自行下载
链接:https://pan.baidu.com/s/11apw514PqfLNBUM7P4Ybmw
提取码:nhbk
(1)、创建一个Servlet
(2)、现在Web.xml中配置好相应的Servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(ServletFileUpload.isMultipartContent(request) ){//判断上传的数据是不是以表单的形式上传,是的话就是上传文件,反之则不是
//创建FileItemFactory工厂实现类
FileItemFactory fileItemFactory = new DiskFileItemFactory();
//创建用于解析数据的工具类ServletFileUpload
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
//解析上传的数据,得到每一个表单项FileItem
try {
List<FileItem> list = servletFileUpload.parseRequest(request);
for(FileItem fileItem : list){
if(fileItem.isFormField()){
//这里是普通表单
System.out.println("name:"+fileItem.getFieldName());
System.out.println("value:"+fileItem.getString("UTF-8"));
}else{
//上传的文件值
System.out.println("表单的name属性:"+fileItem.getFieldName());
System.out.println("上传的文件名"+fileItem.getName());
try {
//将文件保存到相应的目录
fileItem.write(new File("E:\\uninstall\\"+fileItem.getName()));
System.out.println("保存成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}