问题描述
现在有后端传过来的视频流数据,想要通过写文件的方式存储起来,所以想问问前端能不能写文件,怎样写。
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
现在有后端传过来的视频流数据,想要通过写文件的方式存储起来,所以想问问前端能不能写文件,怎样写。
// 请把代码文本粘贴到下方(请勿用图片代替代码)
三种方法:
(1) 当文件比较小时,可以直接生成a标签,即可下载。需注意:
var a = document.createElement('a');
var txt = '%E5%A7%93%E5%90%8D,%E5%B9%B4%E9%BE%84%0AMofei,18,\n';
for(var i=0; i<15; i++){
txt = txt + txt;
}
a.href="data:text/csv;charset=utf-8,\uFEFF"+txt;
a.download="text.csv";
a.click()
(2) 对于较大的文件,可以用Blob
配合URL.createObjectURL
生成下载链接。这种方法能处理的文件大小在500M左右。
var a = document.createElement('a');
var txt = '%E5%A7%93%E5%90%8D,%E5%B9%B4%E9%BE%84%0AMofei,18,\n';
for(var i=0;i<20;i++){
txt = txt + txt;
}
var t = new Blob([txt], {type : 'application/csv'});
a.href=URL.createObjectURL(t)
a.download=""Mofei的CSV.csv";
a.click();
(3)超大的文件,可以参考这个仓库StreamSaver.js
10 回答11.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
写文件得用到类似node Stream之类的, 如果简单保存文件,直接a标签就可以触发下载到本地