我的需求为:对于一个任意类型的大文件(文本/图片或者音频视频文件),用户选择上传后,对该大文件进行切分上传(具体采用file.silce来实现),然后下载时通过URL.createObjectURL(blob)来实现。
现在的问题是:如何采用一个通用的FileReader读取内容的函数,使得任何一种类型的文件通过该程序上传后再下载,文件仍然为完好的文件。
目前做的一些尝试:
1.对于文本类型的文件,其内容含有中文的话,采用如下的方式上传,
filder[curindex] = new FileReader();
filder[curindex].readAsText(file.slice(start, end),"gb2312");
filder[curindex].onload = function () {
tempcell.n = curindex;
tempcell.data = filder[curindex].result;
console.log(tempcell)
//chunk块上传
uploading("chunks", tempcell, chunksurl);
}
下载时,文件编码未乱码。
2.对于图片类型的采用readAsDataURL将图片数据转化成base64,然后下载文件后无法打开,提示格式错误,但直接用img src="上面的base64"可在网页中显示,应该是要进行base64解码才可在本地显示。
现在主要的问题是,有没有一个统一的API函数可以进行通用的文件处理,使得上传后再下载,文件格式依旧正确,谢谢各位码友。 下载部分没有特殊的地方,就是采用传统的创建a标签,利用其download属性。
页面完整的代码地址:
https://github.com/guangying1...