json - vue上传本地json文件
问题描述
我找不到我的问题的答案,我认为只有 Vue.js 才有可能,但我不是 100% 确定。所以问题是这样的。我希望用户从他的计算机中选择文件,它总是 json 文件。可以仅使用 Vue.js 获取该文件并使用它,或者我需要一些后端。
解决方案
这里没有 Vue 特有的东西,也不需要服务器。
做到这一点的方法是使用特殊<input type="file">
的 和 a FileReader()
。
document.getElementById('import').onclick = () => {
const files = document.getElementById('selectFiles').files;
if (files.length <= 0) {
return false;
}
const fr = new FileReader();
fr.onload = e => {
const result = JSON.parse(e.target.result);
const formatted = JSON.stringify(result, null, 2);
document.getElementById('result').innerHTML = formatted;
}
fr.readAsText(files.item(0));
};
<input type="file" id="selectFiles" value="Import" /><br />
<button id="import">Import The File!</button>
<pre id="result"></pre>
显然,这段代码可以很容易地在 Vue 应用程序中实现。
推荐阅读
- java - Cucumber Selenium - Java - PageFactory:步骤定义:java.lang.NullPointerException
- python - 使用 python-obd 连接和查询汽车的问题
- java - 如何使用 ListVersionsRequest、JAVA 从 S3 获取确切文件的信息?
- php - 我可以更改以编程方式应用 WooCommerce 优惠券的顺序吗?
- php - 如何将参数传递给 laravel elequent 模型的事件观察者
- swift - 数组前缀(while :) 为相同的逻辑循环不同的次数。(无法理解)
- node.js - 确保 PubSub 批处理请求在 Google Cloud Run Node App 中发送
- python - 数据框分组到新数据框
- visual-studio - 在进行正常复制“Cmd + c”时,如何阻止 VS 代码在 Vim 中进入正常模式?
- tensorflow - 无法将 tf.keras.layers.ConvLSTM2D 层转换为打开 vino 中间表示