使用电子的本机拖放文件上传器

Sco*_*ers 6 javascript node.js electron

我正在制作一个简单的文件上传器来将 jpeg 文件上传到服务器。但我遇到了障碍。

我似乎无法让本机文件拖放工作。当我将图像或任何其他文件拖到文件上传器所在的位置时,它只会显示停止光标。就像这样:

在此输入图像描述

<input class="upload" type="file" id="Filedata" capture="" name="Filedata" multiple="" onchange="update()" accept="image/jpeg">
       <script type="text/javascript" charset="utf-8">
         document.getElementById('Filedata').ondragstart = (event) => {
         event.preventDefault()
         ipcRenderer.send('ondragstart', '/path/to/item')
       }
       </script>
Run Code Online (Sandbox Code Playgroud)

上面是我链接到的代码。它在 Chrome 测试中运行良好,但在 Electron 应用程序上无法正常运行。我有什么没做到的?我有什么遗漏的吗?我已将另一半代码放在我的main.js

const { ipcMain } = require('electron')
ipcMain.on('ondragstart', (event, filePath) => {
  event.sender.startDrag({
    file: filePath,
    icon: '/path/to/icon.jpg'
  })
})
Run Code Online (Sandbox Code Playgroud)

有人对我做错了什么有任何想法吗?任何帮助将不胜感激,这是我的项目的存储库

编辑 完全重新安装已成功谢谢。

Dᴀʀ*_*ᴅᴇʀ 2

下载存储库并进行测试后,我没有发现任何问题,因此似乎某些内容被意外删除或更改。有两种方法可以解决此问题。

选项1:

npm update electron-prebuilt -save阅读“更新电子”后运行

选项2:

卸载 Electron 并重新安装:

  • 卸载:npm uninstall electron
  • 重新安装:npm install electron

我确实在main.js中注意到您在第 34 行定义了常量。ipcMain在顶部调用常量是一个很好的做法,您可以修改:

const {app, BrowserWindow} = require('electron')
Run Code Online (Sandbox Code Playgroud)

到:

const {app, BrowserWindow, ipcMain} = require('electron')
Run Code Online (Sandbox Code Playgroud)