最近我将文件传输模块添加到我的网络应用程序中。我做了以下步骤:
使用 FileReader()
并将文件读取为 ArrayBuffer 。
切割ArrayBuffer(为了将它们分片发送到另一个客户端)
Convert ArrayBuffer to string,以便我可以将其包装成 JSON 。
我做了一个测试,它转换得很好(jsfiddle):
<html>
<head>
<title>read file</title>
<script type="text/javascript>
function loadFile() {
console.log("load file");
var f = document.getElementById("file");
var file = f.files[0];
console.log(file);
var reader = new FileReader();
reader.onloadend = function(evt) {
var content = evt.target.result;
console.log(content);
console.log(ab2str(content.slice(0,10)));
};
reader.readAsArrayBuffer(file);
}
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint8Array(buf));
}
</script>
</head>
<body>
<input type="file" id="file"></input>
<input type="button" id="send" value="send" onclick="loadFile()"></input>
</body>
</html>
但是当我将它迁移到我的应用程序时,发生了凌乱的代码问题,我得到了类似㌴ㄲ㤰㜸㔶
的内容。它让我很长时间感到沮丧,我无法理解。
顺便说一句,我在我的应用中使用了jquery
,knockout
和sammyjs
。是否有可能导致问题?我也关于charset问题,它也适用于我的测试代码,但不适用于我的应用程序。
我是网络开发的新手。有人有任何想法吗?如果你能帮助我,请先欣赏。