文章目录
不使用框架的文件上传
//使用fileUpload组件完成文件上传
//上传的位置
String realPath = request.getSession().getServletContext().getRealPath("/uploads/");//拿到uploads的根目录
//这里打印,是为了方便查看文件储存位置
System.out.println(realPath);
//判断该路径是否存在
File file = new File(realPath);
if (!file.exists()){
file.mkdirs();
}
//解析request对象,获取上传文件项//DiskFileItemFactory磁盘文件项工厂,获取上传文件项对象
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//解析request
List<FileItem> items = upload.parseRequest(request);
//遍历
for (FileItem item : items) {
//进行判断,当前item对象是否是上传文件项
if (item.isFormField()){
//说明是个普通表单项
}else {
//上传文件项 该项是file 类型的
//获取上传文件的名称
String fileName = item.getName();
//把文件的名称设置唯一值,uuid,避免同一名字文件被覆盖
String uuid = UUID.randomUUID().toString().replace("-", "");
fileName = uuid+"_"+fileName;
//完成文件上传
item.write(new File(realPath,fileName));//public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
//删除临时文件(如果上传文件大小大于10kb就会产生临时文件)
item.delete();
}
}
小知识
绝对路径和相对路径
绝对路径:从盘符开始的路径,这是一个完整的路径。
相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
如果“/”是给服务器用的,则代表当前web工程; 如果是给浏览器用的,则代表webapps目录,webapps目录的/后面还得加上项目名
UUID 是 通用唯一识别码可以来保证不同