• Как реализовать DnD для Desktop-приложения на Electron?

    @Leveofan
    В Electron есть возможность организовать DnD из приложения на рабочий стол, есть даже пример в оф. доке - https://www.electronjs.org/docs/latest/tutorial/na...

    По сути в main процессе вы слушаете событие (ipc канал от рендер процесса), а после выполняете запрос к вашему файловому хранилищу и формируете файл локально, уже туда, куда вы его утянул (в какую папку
    ipcMain.on('drag-and-drop', async (event, { url, filename }) => {
          try {
            const response = await axios({
              url,
              method: 'GET',
              responseType: 'stream'
            });
    
            const filePath = join(app.getPath('desktop'), filename);
            const writer = fs.createWriteStream(filePath);
    
            response.data.pipe(writer);
    
            return new Promise((resolve, reject) => {
              writer.on('finish', resolve);
              writer.on('error', reject);
            });
          } catch (error) {
            await dialog.showMessageBox(null, {
              type: 'error',
              defaultId: 2,
              title: 'Ошибка при скачивании файла',
              message: 'Не удалось скачать файл',
            });
            throw error;
          }
        });
    Ответ написан
    Комментировать