Как получить данные из файла JSON по файлу чтения в Vue? - PullRequest
1 голос
/ 04 марта 2020

Я не могу прочитать содержимое файла JSON, я попытался получить доступ к содержимому файла с помощью ReadFile, но мне это не удалось, я получил пустую строку для содержимого, а URL не определен,

Мой Код:

<template>
 <div class="large-12 medium-12 small-12 cell">
   <input type="file" accept="application/JSON" @change="onFileChange" class="inputFile" />
 </div>
</template>

<script>
import Vue from "vue";

export default {
 data() {
   return {};
 },
 methods: {
   onFileChange(e) {
     let files = e.target.files || e.dataTransfer.files;
     if (!files.length) return;
     this.readFile(files[0]);
   },
   readFile(file) {
     let reader = new FileReader();
     reader.onload = e => {
       this.readContentFile = e.target.result;
       console.log(this.readFile);
     };
     let url = reader.readAsDataURL(file);
     let content =reader.result;
     console.log(url);
     console.log(content);
   }
 }
};
</script>

1 Ответ

2 голосов
/ 04 марта 2020

У тебя почти было это. reader.onload похож на обратный вызов, когда файл завершил загрузку, поэтому ваши console.logs внизу будут происходить до загрузки файла. Надеюсь, вы найдете этот фрагмент полезным.

new Vue ({
 el: "#app",
 methods: {
   onFileChange(e) {
     let files = e.target.files || e.dataTransfer.files;
     if (!files.length) return;
     this.readFile(files[0]);
   },
   readFile(file) {
     let reader = new FileReader();
     reader.onload = e => {
       console.log(e.target.result);
       let json = JSON.parse(e.target.result);
     };
     reader.readAsText(file);
   }
 }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div class="large-12 medium-12 small-12 cell" id="app">
   <input type="file" accept="application/json" @change="onFileChange">
</div>
...