Как использовать ArrayBuffer, полученный от Angular для записи файлов в электронном виде - PullRequest
0 голосов
/ 15 октября 2019

Я использую angular с электроном, и в настоящее время я пытаюсь скопировать файл, отправленный с другого компьютера, и передать его электрону, чтобы он мог записать файл в текущий каталог компьютера. Данные, которые я получил в угловом формате, представлены в формате ArrayBuffer, как показано на рисунке ниже (изображение 1), и я использую IPC, чтобы передать их электрону для сохранения данных в файл (например, файл изображения png)

Изображение 1:

Image 1

, но когда я пытаюсь записать файл с полученным ArrayBuffer, файл (например, изображение) является неправильным. Это не может быть открыто. Результат из журнала является пустым {}, как показано ниже:

Capture.PNG {}

это фрагмент кода из угловой службы, который передает ArrayBuffer электрону. Результат журнала такой же, как на рисунке 1.

image.service.ts

constructor(private socket: Socket, private _electronService: ElectronService) {

 this.socket.on('writeImage', (imageData) => {

  if(this._electronService.isElectronApp) {
    let newImageData = {};
    Object.keys(imageData['imageData']).forEach(function(key) {
      let val = imageData['imageData'][key];
      newImageData[key] = val;
      console.log(key,newImageData[key]);
    });
    this._electronService.ipcRenderer.send('writeImage',newImageData);
  }

 });

}

Тогда приведенный ниже код находится в main.js электрона, где он получает ArrayBuffer от angular

main.js

ipcMain.on('writeImage', (data,imageData) => {

Object.keys(imageData).forEach(function(key) {
  let val = imageData[key];
  console.log(key,val); //***The value of val is {}

  fs.writeFile(__dirname + '/public/avatar/'+key, val, {
      flag: "w"
     }, (err) => {
      if (err)
          return console.log(err);
      console.log("The file was saved!");
     });
  });

});

Могу я узнать, что не так с кодом? почему в журнале main.js значение val пустое {}? Любой другой способ записи / копирования файла, кроме использования BufferArray? Я не настолько знаком с обработкой файлов в угловых и электронных. Хотя я использую тип файла изображения в качестве примера, но это может быть другой тип файла, такой как pdf, word или даже исполняемый файл, такой как windows .exe, тип файла

Спасибо.

...