文件上传后端 随堂代码
  TEZNKK3IfmPf 2023年11月14日 19 0
package servlet;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;

@WebServlet("/upload")
public class Upload extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("解决乱码问题");
req.setCharacterEncoding("utf8");

System.out.println("已进入post请求");

System.out.println("确认这个表单是不是multipart表单");
boolean multipartContent = ServletFileUpload.isMultipartContent(req);
System.out.println(multipartContent);

System.out.println("期望上传的文件都保存在一个名叫uploads目录中");
System.out.println("获取该目录的路径");
String uploadsPath = req.getServletContext().getRealPath("uploads");
System.out.println(uploadsPath);

System.out.println("判断这个路径是否存在");
File uploadFile = new File(uploadsPath);
boolean exists = uploadFile.exists();

if (!exists) {
System.out.println("文件夹不存在,我们就创建");
boolean mkdir = uploadFile.mkdir();
System.out.println("创建目录的结果");
System.out.println(mkdir);
}

System.out.println("代码来到此处,一定就存在上传资源的存放目录了");
System.out.println(uploadsPath);


System.out.println("主要的保存文件操作===========");

if (multipartContent) {
// 工厂
FileItemFactory diskFileItemFactory = new DiskFileItemFactory();
// 规则
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
// 利用规则解析请求
List<FileItem> list = null;
try {
list = servletFileUpload.parseRequest(req);
} catch (FileUploadException e) {
e.printStackTrace();
}
// 【item1,itemn】

// 遍历集合
for (FileItem item :
list) {
// 判断成员是否是普通的字段控件
boolean formField = item.isFormField();

// 如果是普通控件
if (formField) {
// 当前item是一个普通的控件
// 取值
String value = item.getString("utf8");
String name = item.getName();
System.out.println("当前控件的name是" + name);
System.out.println("当前控件的值是" + value);
}
// 如果不是普通控件
else {
// 当前item一定是文件上传控件
// 获取文件名
String name = item.getName();
// 拼一个保存的路径
File file = new File(uploadsPath, name);
// 保存数据
try {
item.write(file);
} catch (Exception e) {
e.printStackTrace();
}
}

}

} else {
String name = req.getParameter("name");
}

}
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   19天前   43   0   0 java
  TEZNKK3IfmPf   2024年05月31日   54   0   0 java
TEZNKK3IfmPf