Не могу прочитать файл после записи с помощью fs - PullRequest
0 голосов
/ 04 марта 2020

Я хочу прочитать изображение, записать его в папку и снова прочитать, чтобы получить его base64. Я получаю следующую ошибку: Ошибка: ENOENT: нет такого файла или каталога, доступ к C: \ Workspace \ Project \ upload_storage \ image.jpg 'at Object.accessSyn c (фс. js: 192: 3)

Мой код:

const FS = require("fs");
var multiparty = require('multiparty');
var path = require('path');
function readAndWriteFile(file , newPath){
  FS.readFileSync(file.path, (err, data)=>{
      FS.writeFileSync(newPath, data, (err)=>{                                                                                                                
          });
  });
}
function base64Encode(path,filemime) {
    FS.readFileSync(path, {encoding: 'base64'}, (err, data)=>{
      if (err) {
        throw err;
      }
      return `data:${filemime};base64,${data}`;
    });
}

...

          var form = new multiparty.Form()
          //retrieve files using multiparty form
          form.parse(req, function(err, fields, files) {
            var document;
            const documents = files.file; 

            for(i=0; i<documents.length; i++){
              document=documents[i];
              const contentType = String(document.headers["content-type"]);
              filePath = path.join(process.cwd(),'/upload_storage/',document.originalFilename);
              readAndWriteFile(document,filePath);
              // // convert image to base64 encoded string
              const base64str = base64Encode(filePath, contentType);
              console.log(base64str);
            }
         }

если я прокомментирую вызов функции base64Encode, файлы будут созданы. Что я делаю не так?

1 Ответ

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

Не используйте обратные вызовы с _fileSync. Но похоже, что вы хотите copyFileSync, а затем unlinkSync в любом случае:

const fs = require('fs');

function readAndWriteFile(file , newPath){
  fs.copyFileSync(file.path, newPath);
  fs.unlinkSync(file.path)
}

Вы пробовали читать документацию для fs ?

Больше чтения и примеров в этот вопрос ,

...