下面是javaweb实现文件上传的完整攻略:
1. 准备工作
在实现文件上传之前,需要先通过一些准备工作来确保程序能够正确运行:
1.1 配置servlet-api.jar文件
确保下载并配置servlet-api.jar文件,该文件包含了用于编写JavaWeb开发的类。
1.2 配置服务器环境
使用基于Java的web服务器(如Tomcat)来运行JavaWeb应用,确保能正常快速启动服务器。
1.3 熟悉文件上传相关类的使用
JavaWeb提供了一些用于文件上传的类和方法,需要熟悉它们的使用。
2. 实现文件上传的步骤
实现文件上传的步骤如下:
2.1 获取上传文件
使用FileItemFactory类的实现类DiskFileItemFactory,可以获取上传文件的相关信息并保存到一个List<FileItem>集合中,其中FileItem表示上传的每个文件。
//创建FileItemFactory实例
FileItemFactory factory = new DiskFileItemFactory();
//创建servlet文件上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
//定义上传文件大小
upload.setFileSizeMax(10 * 1024 * 1024);//10M
//获取上传文件列表
List<FileItem> uploadItems = upload.parseRequest(request);
2.2 处理上传文件
对于每一个上传的文件,可以通过FileItem类提供的方法获取文件名、文件大小、文件类型、上传时间等相关信息。同时可通过FileItem.write()方法将文件保存到本地磁盘。
//遍历上传的文件
for(FileItem item : uploadItems) {
//获取原文件名
String fileName = item.getName();
//获取文件大小
Long fileSize = item.getSize();
//获取文件类型
String contentType = item.getContentType();
//获取上传时间
Date uploadDate = new Date(item.getLastModifiedTime());
//保存文件到本地磁盘(假设保存到D盘upload目录下)
File file = new File("D:/upload/" + fileName);
item.write(file);
}
3. 示例说明
3.1 实现单个文件上传
在页面中添加一个文件上传表单,用户选择上传的文件后,将其提交到服务器,在服务器端解析文件并保存到本地磁盘。
<form action="UploadServlet" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file"><br>
<input type="submit" value="上传">
</form>
在服务器端实现代码如下:
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建FileItemFactory实例
FileItemFactory factory = new DiskFileItemFactory();
//创建servlet文件上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
//定义上传文件大小
upload.setFileSizeMax(10 * 1024 * 1024);//10M
try {
//获取上传文件列表
List<FileItem> uploadItems = upload.parseRequest(request);
//遍历上传的文件
for(FileItem item : uploadItems) {
//获取文件名
String fileName = item.getName();
//保存文件到本地磁盘(假设保存到D盘upload目录下)
File file = new File("D:/upload/" + fileName);
item.write(file);
}
response.getWriter().println("上传成功!");
} catch (Exception e) {
response.getWriter().println("上传失败!");
}
}
}
3.2 实现多个文件上传
与单个文件上传类似,只需要在HTML表单中添加多个文件上传框即可。
<form action="BatchUploadServlet" method="post" enctype="multipart/form-data">
第1个文件:<input type="file" name="file1"><br>
第2个文件:<input type="file" name="file2"><br>
第3个文件:<input type="file" name="file3"><br>
<input type="submit" value="上传">
</form>
在服务器端,只需要对上传的文件进行遍历保存即可。
public class BatchUploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建FileItemFactory实例
FileItemFactory factory = new DiskFileItemFactory();
//创建servlet文件上传对象
ServletFileUpload upload = new ServletFileUpload(factory);
//定义上传文件大小
upload.setFileSizeMax(10 * 1024 * 1024);//10M
try {
//获取上传文件列表
List<FileItem> uploadItems = upload.parseRequest(request);
//遍历上传的文件
for(FileItem item : uploadItems) {
//获取文件名
String fileName = item.getName();
//保存文件到本地磁盘(假设保存到D盘upload目录下)
File file = new File("D:/upload/" + fileName);
item.write(file);
}
response.getWriter().println("上传成功!");
} catch (Exception e) {
response.getWriter().println("上传失败!");
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javaweb实现文件上传示例代码 - Python技术站