zkrvndm
@zkrvndm
Архитектор решений

Зачем вообще нужен FileSystem API?

Сколько не думаю, но по факту же это бесполезная вещь! Ведь реального доступа на диск он не даёт, только к некой виртуальной области. Однако, ведь с таким же успехом можно свою реализацию виртуальной ФС написать, правда опять же непонятно зачем это вообще может пригодится.

Кому-нибудь доводилось использовать FileSystem API на реальных проектах? Интересует ваш опыт применения.
  • Вопрос задан
  • 158 просмотров
Пригласить эксперта
Ответы на вопрос 1
@TheOnlyFastCoder2
Вместо 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)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы