背景:
通过前台上传一个视频,然后再保存到本地。
问题:
通过request.getInputStream()获取输入流,FileOutputStream输出到本地。代码运行无异常,但是文件打开时错误。提示如图:
解决:
方式一:
使用request.getPart(String fileName);(适用于单文件)。多文件可用request.getParts();
Part part = request.getPart("file");
InputStream is = part.getInputStream();
File file = new File("C:\\Users\\yyb\\Desktop\\part.mp4");
FileOutputStream os = new FileOutputStream(file);
byte[] bb = new byte[1024];
int ch;
while ((ch = is.read(bb)) > -1) {
os.write(bb, 0, ch);
}
os.close();
is.close();
方式二:
使用MultipartFile
public String uploadFile(@RequestParam("test") MultipartFile file) {
// 1判断文件是否为空
if (file.isEmpty()) {
return "文件为空";
}
// 2获取文件名
String fileName = file.getOriginalFilename();
// 3获取后缀
String suffixName = fileName.substring(fileName.lastIndexOf("."));
// 4路径
String filePath = "E://springboot_fileUpload//";
File dest = new File(filePath + fileName);
// 5判断目录是否存在
if (!dest.getParentFile().exists()) {
// 不存在,创建
dest.getParentFile().mkdirs();
}
try {
file.transferTo(dest);
return "上传成功";
} catch (IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "上传失败";
}
使用这两种方式。保存到本地的文件可以正常打开。