首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从IpcMain返回数据

如何从IpcMain返回数据
EN

Stack Overflow用户
提问于 2020-05-05 06:03:20
回答 1查看 1.6K关注 0票数 0

我正在创建一个拖放反应和使用电子发送和接收我的文件数据。我收到了一个senderId和console.log的发件人。如何才能让数据显示出来?我遗漏了什么?

Dropzone.js文件

代码语言:javascript
复制
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文件

代码语言:javascript
复制
 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]});
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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完成所有操作?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61606732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档