不得不说SpringBoot太好用了。
要求:
拿到切片后就可以写文件的合并了,先说以下,前端传过来的数据是严格顺序,上一个切片没有写入,下一个是不会传过来的,详情可以去看我另一篇文章原生JS实现大文件分片 - 知乎 (zhihu.com)
先说一下想法:
public void 单片写入(文件 file) throws IOException {
File file1 ;
MultipartFile meFile =file.getFile();// MultipartFile 这个类可以方便的获取前端传过来的文件
file1=new File("C:\\Users\\laptop\\IdeaProjects\\file21510\\src\\main\\resources\\temp\\001\\"+file.getName());
//filel获取文件,没有就创建
if (!file1.exists()&&file.get切片序列()==0)//文件是否已经创建且文件是第一个保证文件的顺须
{
meFile.transferTo(file1);//如果没有就创建
return;
}
else {//如果已经创建就合并
RandomAccessFile raf = new RandomAccessFile(file1,"rw");
// RandomAccessFile类所提供的发方法可以动态的操作文件,
//这里创建一个可以操作不完整文件的对象
raf.seek(file.get切片序列()*file.get切片长度());//seek(int n)从n处处理
byte[] bytes = meFile.getBytes();//提区文件的字节流
raf.write(bytes);//上面的seek方法已经把指针放在这里从这直接写入
raf.close();//写入后关闭
}
}
}
上面就可以实现分片文件的接收合并了,重要的是MultipartFile,RandomAccessFile,这两个类。
有了上面的代码只需要在构造一个连接redis的接口和实现类。
这是我想的,如果有什么错误,请大家指出
原文:https://www.cnblogs.com/pengfuhao/p/14772087.html