前段页面实现文件上传的条件
文件上传的原理:
使用 Commons-fileupload 组件实现文件上传:
<!--
借助 第三方 Commons-fileupload 组件实现文件上传
注:Commons-fileupload 组件从 1.1 版本开始,它工作时需要 commons-io 包的支持。
-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
上传页面 jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>上传文件</title>
</head>
<body>
<h3>文件上传</h3>
<form action="user/fileupload1" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br/>
<input type="submit" value="上传文件"/></form>
</body>
</html>
页面保存的后台逻辑
// fileupload1
@RequestMapping(value = "/fileupload1")
public String fileupload1(HttpServletRequest request) throws Exception
{
System.out.println(" Commons-fileupload 组件实现文件上传. ");
// 先获取到要上传的文件目录
String path = request.getSession().getServletContext().getRealPath("/uploads");
// 创建File对象,一会向该路径下上传文件
File file = new File(path);
// 判断路径是否存在,如果不存在,创建该路径
if (!file.exists())
{
file.mkdirs();
}
// 创建磁盘文件项工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
// 解析request对象
List<FileItem> list = fileUpload.parseRequest(request);
// 遍历
for (FileItem fileItem : list)
{
// 判断文件项是普通字段,还是上传的文件
if (fileItem.isFormField())
{
} else
{
// 上传文件项
String filename = fileItem.getName();
// 把文件的名称设置唯一值,uuid
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid+"_"+filename;
// 上传文件
fileItem.write(new File(file, filename));
// 删除临时文件
fileItem.delete();
}
}
return "success";
}