基于springMVC的多文件上传和单文件上传
普通Java工程上传文件需要依赖这两个jar包:
本例所使用spring boot创建的web工程没有手动添加以上两个jar包的依赖,其他若需要则加上
accept="image/gif, image/jpeg, image/png":用于上传文件类型的限制
1.单文件上传
代码实现:
1.1:file.html:
<!--单文件上传-->
<form action="uploadFile.do" method="post" enctype="multipart/form-data">
<input type="file" name="file" value="单文件上传" >
<input type="submit" value="单文件上传">
</form>
1.2: FileController.java控制层:
@Controller
public class FileController {
//单文件接收
@PostMapping("/uploadFile.do")
public String uploadFile(MultipartFile file) throws IOException {
File file1 = new File("E:\\uploadFile\\" + file.getOriginalFilename());
file.transferTo(file1);
System.out.println(file1);
return "file";
}
}
2. 多文件上传
代码实现:
基于单文件上传多加上:multiple="multiple"
2.1: file.html:
<!--多文件上传-->
<form action="uploadFiles.do" method="post" enctype="multipart/form-data">
<input name="files" accept="image/gif, image/jpeg, image/png" multiple="multiple" type="file" value="多文件上传" />
<input type="submit" value="多文件上传" />
</form>
2.2: FileController.java控制层:
import com.kmu.entity.FilesPO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
@Controller
public class FileController {
//多文件接收
@PostMapping("/uploadFiles.do")
public String uploadFiles(FilesPO filesPO) throws IOException {
//springMVC实现
MultipartFile[] files = filesPO.getFiles();
for(MultipartFile file:files){
file.transferTo(new File("E:\\uploadFile\\" + file.getOriginalFilename()));
System.out.println("文件名:"+file.getOriginalFilename());
}
return "file";
}
}
2.3: FilesPO.java实体类:
import org.springframework.web.multipart.MultipartFile;
public class FilesPO {
private MultipartFile[] files; // 存储上传的文件
public MultipartFile[] getFiles() {
return files;
}
public void setFiles(MultipartFile[] files) {
this.files = files;
}
}
其他:
a.它可以生成几乎不会重复的一个字符串,把他加上文件名或文件后缀就是一个新的几乎不会重名的文件名:
long time = new Date().getTime();
String fileName = time + UUID.randomUUID().toString().replace("-", "");
b.还有,如果是要存入数据库或阿里云的oss里,只需把上面生成的随机文件名存入数据库;当查看文件的时候,把文件所在的本地文件夹名(E:\uploadFile)或oss桶的(https://kmu-headpic.oss-cn-chengdu.aliyuncs.com/)拼上从数据库去取出的文件名即可。