JS文件上传和下载编码问题

我的需求为:对于一个任意类型的大文件(文本/图片或者音频视频文件),用户选择上传后,对该大文件进行切分上传(具体采用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...

阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题