如何将文本保存到文件并再次读取,但在javascript中保存为二进制文件
How to save a text to file and read it again but save as binary in javascript
我正在从一个SO问题中使用filesver .js从字符串中构建一个文件保存程序
let byteChars = atob("my string");
let byteNumbers = new Array(byteChars.length);
for (var i = 0; i < byteChars.length; i++) {
byteNumbers[i] = byteChars.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
var data:Blob = new Blob([byteArray], {type: "application/octet-stream"});
var filename:string = filename + '.myext';
saveAs(data, filename, true);
然后我必须读回"my string"
使用Javascript的FileReader:
let fr = new FileReader();
fr.onload = (e:FileReaderEvent) => {
let result:any = e.target.result;
//I don't know what I have to do with this type of data to get "my string" back
};
fr.readAsBinaryString(file);
编辑,更新
写文件
let byteChars = atob("my string");
let byteNumbers = new Array(byteChars.length);
for (var i = 0; i < byteChars.length; i++) {
byteNumbers[i] = byteChars.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
var data = new Blob([byteArray], {type: "application/octet-stream"});
saveAs(data, "myfile.abc");
读文件
<input type="file">
<script>
var reader = new FileReader();
reader.addEventListener("load", function(e) {
document.body.innerHTML += "<br>" + btoa(e.target.result);
});
document.querySelector("input[type=file]")
.addEventListener("change", function(e) {
reader.readAsBinaryString(e.target.files[0])
})
</script>
plnkr http://plnkr.co/edit/0KVhXnd0JpysplDLcAlC?p=preview
您可以使用TextEncoder()
, TextDecoder()
或FileReader()
, .readAsBinaryString()
var str = "my string";
var encoder = new TextEncoder();
var encodedBytes = encoder.encode(str);
// do file save stuff
var decoder = new TextDecoder();
var decodedBytes = decoder.decode(encodedBytes);
console.log(encodedBytes, decodedBytes);
// alternatively, using `FileReader()`
var reader = new FileReader();
reader.onload = function() {
console.log("FileReader result:", reader.result)
}
reader.readAsBinaryString(new Blob([encodedBytes]))
相关文章:
- 如何将字符串拆分为字符,但在javascript中保留空格
- JavaScript获胜't运行,但在jsFiddle中工作
- Javascript的某些部分在Chrome中不起作用,但在其他浏览器中可以完美工作
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- JQuery和Javascript没有'在我的项目中不起作用,但在网络上起作用
- 如何在javascript中点击按钮重新加载网页,但在重新加载后调用函数
- 触发器方法在javascript对象中定义,但在对象本身之外
- Javascript clientHeight在devtools控制台中返回正确的值,但从js返回0
- javascript/jQuery:在title中添加换行符——在IE9中有效,但在IE8中无效
- JavaScript;尝试在
- 和
- 和
中触发点击,但直到调用 - 才
- 和
- Javascript下载在firefox中停止,但在Chrome中有效
- 哪些关键字在JavaScript中保留,但在Java中不保留
- 引导程序's的javascript在本地工作,但在部署到服务器时不能工作
- Javascript可以在chrome中使用,但不能在其他浏览器中使用
- 数组在JavaScript中不是null,但在PHP'Ajax之后的s$_POST
- JavaScript函数在Safari中有效,但在Firefox中找不到
- Javascript'元素'在ie中未定义,但在chrome和firefox中运行良好
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 获取所选选项的Javascript在Webkit/FF中有效,但在IE中无效
- javascript(但不是jQuery)在x轴上固定了位置,但在y轴上没有