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