目录
<dependency>
<groupId>commons-fileuploadgroupId>
<artifactId>commons-fileuploadartifactId>
<version>1.4version>
dependency>
<dependency>
<groupId>commons-iogroupId>
<artifactId>commons-ioartifactId>
<version>2.6version>
dependency>
上传文件需要的是post请求,因为get请求传输数据的大小最大为2KB,post请求方式要大得多。
<form action="提交页面" method="post" enctype="multipart/form-data">
<input type="file" name="接收参数名称">

- 选用POST请求方式
- 参数显示在BODY中(GET请求的内容在请求头中,POST在请求体中)
- 选择form-data
- 选择文件
- 从本地选择需要上传的文件
- import org.apache.commons.io.FilenameUtils;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.multipart.MultipartFile;
-
- import javax.servlet.http.HttpServletRequest;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.UUID;
-
- @Controller
- @RequestMapping(value="file")
- public class FileController{
-
- @RequestMapping(value="/uploadfile",produces="text/html;charset=utf-8")
- @ResponseBody
- //控制器不是返回页面,而是字符串
-
- public String uploadTest(@RequestParam("file") MultipartFile file,
- HttpServletRequest request)
- //MultipartFile是由spring提供的类
- throws IOException{
- //IOException由通过文件创建字节输入流抛出,后续错误交给spring处理
-
- //获取文件名
- String upload Name = file.getOriginalFilename();
- if("".equals(uploadName)){
- //如果用户没有上传文件,就无法得到文件名
- return "你并没有上传文件啊喂";
- }
-
- //获取项目中文件的绝对路径,保存路径值
- String loadPath = request.getServletContext().getRealPath("/upload/");
-
- //查看路径对应的目录
- File newPath = new File(loadPath);
-
- //如果此路径不存在,创建此目录
- if(!newPath.exists()){
- newPath.mkdir();
- }
-
- //生成永不重复的文件名
- //变成字符串,将随机出现的-替换为空字符串
- String uuid = UUID.randomUUID().toString().replace("-","");
-
- //通过commons-io工具的FilenameUtils类得到上传文件的后缀
- String suffix = FilenameUtils.getExtension(uploadName);
-
- //保存文件的完整名称
- String fileName = uuid + "." + suffix;
-
- //文件输入流读取文件
- //需要抛出异常IOException 认为有可能file不存在
- InputStream is = file.getInputStream();
-
- //文件输出流保存文件到项目中
- //地址为apache-tomcat-9.0.65\\webapps\\ssm\\upload\\
- FileOutputStream os = new FileOutputStream(new File(newPath, fileName));
-
- int len = 0;
- //缓冲区
- byte[] buffer = new byte[1024];
-
- //读取数据存入参数数组中,返回读取长度,如果没有内容返回-1
- while((len = is.read(buffer)) != -1){
- //从数组下标为0的位置,写到为len的位置
- os.write(buffer,0,len);
- //清空缓冲区
- os.flush();
- }
- //后用的资源先关闭
- os.close();
- is.close();
- return "文件上传成功,文件名为:" + fileName
- + ",文件保存位置为:" + loadPath + fileName;
- }
- @RequestMapping(value="/upload",produces="text/html;charset=utf-8")
- @ResponseBody
- public Stringupload(@RequestParam("file") MultipartFile file,HttpServletRequest request)
- throws IOException{
- //获取文件名
- StringuploadName=file.getOriginalFilename();
- if("".equals(uploadName)){
- return"你并没有上传文件啊喂";
- }
- //保存路径值
- String loadPath = request.getServletContext().getRealPath("/upload/");
-
- //创建路径对应的目录
- File newPath = newFile(loadPath);
-
- //如果此路径不存在,创建此目录
- if(!newPath.exists()){
- newPath.mkdir();
- }
-
- //生成永不重复的文件名
- //变成字符串,将随机出现的-替换为空字符串
- String uuid = UUID.randomUUID().toString().replace("-","");
-
- //通过commons-io工具的FilenameUtils类得到上传文件的后缀
- String suffix = FilenameUtils.getExtension(uploadName);
-
- //保存文件的完整名称
- String fileName = uuid + "." + suffix;
-
- //简化输入输出流的过程
- //将上传的文件转换为指定路径的新文件
- file.transferTo(new File(newPath,fileName));
- return"文件上传成功,文件名为:" + fileName + ",文件保存位置为:" + loadPath + fileName;
- }