以下代码假设将数据从 CSV 文件导入到 localStorage 中。目标是替换/更新任何现有的本地存储数据。我正在使用 FileReader 进行导入,并尝试使用 JSON.stringify 将其保存到 localStorage。
const fileInput = document.getElementById('csv');
const readFile = () => {
const reader = new FileReader();
reader.onload = () => {
localStorage.setItem("entry_list", JSON.stringify(reader.result));
}
reader.readAsArrayBuffer(fileInput.files[0]);
};
fileInput.addEventListener('change', readFile);
我认为问题在于它是否试图将其作为对象而不是数组导入。我该如何解决这个问题或解决这个问题?
问题是您尝试在
JSON.stringify
对象上使用 ArrayBuffer
。 ArrayBuffer
没有任何可枚举的对象属性,因此在字符串化时就变成了 {}
。
要么使用
JSON.stringify(Array.from(new Uint8Array(reader.result)))
将其转换为常规数组,要么 - 我的建议,因为它更容易再次转换为文件并且更小以存储 - 不要首先将其读取为 ArrayBuffer
而是作为数据 URI(其中将使用 base64 编码),将 readAsArrayBuffer
替换为 readAsDataURL
。