我的问题是:MultipartFile[],上传两个文件成功(一个图片和一个视频),如何分别获取这两个文件的名字,存进数据库图片和视频两个字段?
@RequestMapping(value = "/uploads", method = RequestMethod.POST,headers="content-type=multipart/form-data")
public @ResponseBody
JsonResult uploads(@RequestParam("videoTitle") String videoTitle,@RequestParam("filename") MultipartFile[] files) {
// 数据库保存的路径
String uploadPathDB = "";
// 最终上传路径
String finalVideoPath = "C:\\VideoUpload\\";
File dest = new File(finalVideoPath);
System.out.println("dest"+dest);
if (!dest.exists())
dest.mkdir();
String fileName ="";
String OriginalFilename ="";
String videoOutputName ="";
//判断file数组不能为空并且长度大于0
if(files != null && files.length > 0){
//循环获取file数组中得文件
for(int i = 0;i < files.length;i++){
MultipartFile file = files[i];
//获取文件上传名字
OriginalFilename = file.getOriginalFilename();
//生成文件名,带后缀名
fileName = UUID.randomUUID().toString()+"."+OriginalFilename.substring(OriginalFilename.lastIndexOf(".")+1);
//生成保存到数据的视频名,要取前边的值,保持一致
videoOutputName = fileName ;
// 设置数据库保存的路径
uploadPathDB = String.format("/VideoUpload/"+ videoOutputName);
finalVideoPath = FILE_BASE + uploadPathDB;
//保存文件
if (!file.isEmpty()) {
try {
file.transferTo(new File( dest+fileName));
} catch (IOException e) {
e.printStackTrace();
JsonResult.errorMsg("上传失败");
}
}
}
}
LOGGER.info("uploadPathDB = {}", uploadPathDB);
LOGGER.info("coverPath = {}", uploadPathDB + ".jpg");
LOGGER.info("finalVideoPath {}= ", finalVideoPath);
// 保存视频信息到数据库
Video video = new Video();
video.setVideoTitle(videoTitle);
video.setVideoPath(uploadPathDB);
video.setCoverPath(uploadPathDB + ".jpg");
video.setCreateTime(new Date());
String videoId = videoService.addVideo(video);
System.out.println(videoId);
return JsonResult.ok("上传成功");
}
感谢回复的老哥
如果要求比较严格的,可以通过文件的魔数来判别文件类型
字段:
类型(视频,图片,音频....)
文件路径()
1、使用commons-io-2.2.jar里面的.FilenameUtils
import org.apache.commons.io.FilenameUtils;
String filename = FilenameUtils.getName(file.getOriginalFilename());//file对应上传的文件MultipartFile file
谢谢你的回复。看不太懂你意思,如我获取到文件名,不可能还做个判断,判断后缀名是jpg和png的存到图片字段吧。
你获取到文件名之后,如果要区分图片和视频,肯定是要做判断的。不然怎么知道是什么类型的?
判断后缀是一种方法。不过后缀名可以随便改,不能保证真实性
谢谢,我用另一种方法 接受两个MultipartFile就容易处理了。
楼主是怎么做的