Загрузите локальный файл Json и сохраните его в переменной, используя Javascript - PullRequest
0 голосов
/ 28 марта 2020

Я создал небольшое приложение, которое сохраняет мои данные в файле JSON! Поскольку все локально, мне не нужны node.js и бэкэнд-технологии. После ряда функций файл JSON сохраняется локально с Blob.

Как создать событие, которое будет импортировать этот файл, выбрав его из файловой системы компьютера?

Если я напишу в верхней части списка import data from './data.json';, это работает! Я предпочел бы иметь возможность загружать файл из любой точки файловой системы.

это позволяет мне сохранить файл там, где я хочу:

 let file = new Blob([fileJSON], {type: 'application/json'});
     let a = document.createElement("a");
     a.href = URL.createObjectURL(file);
     a.download = file;
     a.click();

как мне загрузить его, выбрав каждый раз путь?

loadDatas=()=>{
  const dataJ = //something that allows me to go and choose the json file from my computer wherever it is

const parseIt = $.parseJSON(dataJ);
    // do something
}

1 Ответ

0 голосов
/ 28 марта 2020

Вы можете попробовать коды ниже:

constructor(props){
    super(props)
    this.state={
         file:null
    }
    this.inputRef = React.createRef()
}

openFileLoadingDialog = () => {
    this.inputRef.current.click()
}

readURL=(e)=>{
    let file = URL.createObjectURL(e.target.files[0])
    if(this.state.file !== file)
    {
        this.setState({
            file : file
        })
    }
}

render(){

     return(
         <div>
             <input type="file" style={{display:"none"}} ref={this.inputRef} onChange={this.readURL}/>
             <input type="button" value="open file" onClick={this.openFileLoadingDialog} />
         </div>
     )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...