大文件上传拆分,使用base64写入本地txt拼接合并上传,拆分上传
新入职一家公司第一天领导给了个任务
说上传文件到服务器速度太慢
结果读完代码发现了问题
原有代码是将大文件拆分成5兆的base64字符串存储到数据库
每次都需要读取数据库该文件的base64字符串和第二个拆分文件合并再存储到数据库
直至最后一条合并,该方式因为base64多次上传到数据库,导致数据库性能消耗很高,效率很慢
· 想到了一个解决方式就是既然效率慢的原因是数据库读写base64字符串导致,
· 为何不将base64存储到本地文本用来拼接,数据库只存本地文本的路径呢
· 说做就做,结果显而易见,之前200兆文件上传需要30分钟,现在只需要不到2分钟,(用的测试服务器较差)
· 因公司保密要求,只上关键代码,异常自己补充,下面是大致步骤
· 最下方有两个方法
//1.上传第一部分文件到本地,创建本地文本,将文件转为base64字符串存入文本
//2.设置本地文本路径
String filePath="D:/test.txt"
//3.判断本地文件是否存在,如果存在就追加写入,如果不存在则创建并写入
if (!file.exists()) {
boolean hasFile = file.createNewFile();
if(hasFile){
log.i