Вместо FileSystem API можно использовать new FileReader(); он позволяет загружать и читать файл , без
каких-нибудь затруднений . Но если же вы хотите перезаписать файл или создать новый , то вам не обойтись от использования серверной части вместе с библиотекой fs для Nodejs
<input id="loaderFile" type="file" >
loaderFile.addEventListener('change', ({target}) => {
let file = target.files[0];
const loader = new FileReader();
if((/(.json)$/).test(file.name)) {
loader.readAsText(file)
loader.onload = () => {
const res = JSON.parse(loader.result);
console.log(res)
}
}
})
вот пример серверной части
const express = require("express");
const cors = require("cors");
const app = express();
const fs = require("fs-extra");
app.use(cors())
app.use(express.json({limit: '4MB'}))
app.all("/", function(req,res) {
if(req.body.name != undefined){
res.send("It's okay")
const name = req.body.name.replace(/(\.)/gi,"");
if(!fs.existsSync(`./files/${name}`)) {
fs.mkdir(`./files/${name}`, function(el){
fs.writeFileSync(`./files/${name}/${name}.srt.json`, JSON.stringify(req.body.DOM) )
});
}
else {
fs.writeFileSync(`./files/${name}/${name}.srt.json`, JSON.stringify(req.body.DOM) )
}
}
})
app.listen(8080)
обратиться к серверу можно с помощью библиотеки axios
const url = "http://localhost:8080/";
const loadedFile = JSON.stringify(loadSubtittles);
const savedSub = JSON.stringify(saveSubtittles);
const data = {
name: target.dataset.file,
DOM: {
"loadFile": loadedFile,
"saveSubtittles": savedSub
}
}
axios.post(url,data,{
headers:{
"Content-Type":"application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers" : "Origin, X-Requested-With, Content-Type, Accept"
},
})
.then ( res => res)
.catch( err => err)