我正在创建一个拖放反应和使用电子发送和接收我的文件数据。我收到了一个senderId和console.log的发件人。如何才能让数据显示出来?我遗漏了什么?
Dropzone.js文件
const [fileNames, setFileNames] = useState([]);
const handleDrop = useCallback(acceptedFiles => {
setFileNames(_.map(acceptedFiles, ({ name, type, path, size, lastModified,
lastModifiedDate }) => {
return { name, type, path, size, lastModified, lastModifiedDate };
}))
let formData = new FormData();
formData.append('uploadedFiles', fileNames);
}, [fileNames]);
useEffect(() => {
ipcRenderer.send(FETCH_AUDIO_FILES, fileNames);
}, [fileNames]);
useEffect(() => {
const handler = (filesWithData) => {
_.map(filesWithData, (event, data) => {
console.log(data);
})
};
ipcRenderer.on(METADATA_COMPLETED, handler);
return () => ipcRenderer.removeListener(METADATA_COMPLETED, handler);
});Index.js文件
ipcMain.on(FETCH_AUDIO_FILES, (event, files) => {
const promises = _.map(files, (file) => {
return new Promise((resolve, reject) => {
NodeID3.read(file.path, (err, tags) => {
resolve({
...files,
...tags
})
})
})
});
Promise.all(promises).then(results => {
event.sender.send(METADATA_COMPLETED, results);
[![enter image description here][1]][1]});
});发布于 2020-05-05 06:11:04
无法通过IPC通道发送文件等特殊对象:
参数将使用结构化克隆算法序列化,就像postMessage一样,因此不包括原型链。发送函数、承诺、符号、WeakMaps或WeakSets将引发异常。
注意:发送非标准JavaScript类型(如DOM对象或特殊电子对象)是不可取的,并将开始抛出以电子9开头的异常。
-- https://www.electronjs.org/docs/api/web-contents#contentssendchannel-args
您可以将文件读入呈现程序进程中的Base64字符串、缓冲区或其他任何内容,然后将其发送到主进程,或者如果您希望选择文件,可以在主进程中使用例如https://www.electronjs.org/docs/api/dialog#dialogshowopendialogbrowserwindow-options完成所有操作?
https://stackoverflow.com/questions/61606732
复制相似问题