it-swarm.com.de

Elektron - Laden Sie eine Datei an einen bestimmten Speicherort herunter

Ich muss eine Datei an einen bestimmten Speicherort in meinem Electron-Programm herunterladen.
Ich habe versucht, diese API zu implementieren, bin jedoch gescheitert.
Dann habe ich versucht, die offizielle API zu implementieren, konnte aber nicht erkennen, wie ich mit dem Herunterladen der Datei beginnen soll.

Wie kann ich eine Datei an einen bestimmten Speicherort herunterladen, z. B. C:\Folder?
Vielen Dank!

4
avi12

Am Ende habe ich elecron-dl verwendet.
So senden Sie eine Download-Anfrage (vom renderer.js):

ipcRenderer.send("download", {
    url: "URL is here",
    properties: {directory: "Directory is here"}
});

In dem main.js würde Ihr Code ungefähr so ​​aussehen:

const {app, BrowserWindow, ipcMain} = require("electron");
const {download} = require("electron-dl");
let window;
app.on("ready", () => {
    window = new BrowserWindow({
        width: someWidth,
        height: someHeight
    });
    window.loadURL(`file://${__dirname}/index.html`);
    ipcMain.on("download", (event, info) => {
        download(BrowserWindow.getFocusedWindow(), info.url, info.properties)
            .then(dl => window.webContents.send("download complete", dl.getSavePath()));
    });
});

Der Listener "Download abgeschlossen" befindet sich im renderer.js und sieht folgendermaßen aus:

const {ipcRenderer} = require("electron");
ipcRenderer.on("download complete", (event, file) => {
    console.log(file); // Full file path
});

Wenn Sie den Fortschritt Ihres Downloads verfolgen möchten:

In main.js:

ipcMain.on("download", (event, info) => {
    info.properties.onProgress = status => window.webContents.send("download progress", status);
    download(BrowserWindow.getFocusedWindow(), info.url, info.properties)
        .then(dl => window.webContents.send("download complete", dl.getSavePath()));
});

In renderer.js:

ipcRenderer.on("download progress", (event, progress) => {
    console.log(progress); // Progress in fraction, between 0 and 1
    const progressInPercentages = progress * 100; // With decimal point and a bunch of numbers
    const cleanProgressInPercentages = Math.floor(progress * 100); // Without decimal point
});
13
avi12

Damit ein Benutzer eine Datei in einer Electron-Anwendung herunterladen kann, müssen Sie folgende Schritte ausführen:

  1. Rufen Sie entweder die Standardsitzung oder die Sitzung des Benutzers von der Partition ab. Siehe Sitzung

  2. Sobald Sie eine Instanz des Sitzungsobjekts haben, können Sie auf Ereignisse wie will-download warten, die für das Objekt Session ausgegeben werden, wenn der Benutzer auf einen Link klickt, um eine Datei herunterzuladen, und die Datei heruntergeladen wird.

  3. Das will-download -Ereignis gibt die item zurück, die heruntergeladen werden soll. Diese item enthält die erforderlichen Ereignisse (heruntergeladen, fehlgeschlagen, angehalten usw.) und die erforderlichen Methoden (Speicherort der Datei) usw.

Nun zu der Frage nach How to download a file to C:/folder?

Dazu haben Sie zwei Möglichkeiten:

  1. Sie können den Benutzer entweder auffordern, den Download-Speicherort festzulegen (Standardverhalten).
  2. Sie können den Download-Speicherort für die Datei mit item Objekt festlegen, das Sie aus dem Ereignis will-download erhalten. Verwenden Sie die Methode setSavePath für das Objekt item .

Wenn Sie lieber den Standard-Download-Speicherort für alle Dateien festlegen möchten, können Sie setDownloadPath für das Sitzungsobjekt verwenden. Dann ist dies der Standardpfad für diese Sitzung.

0
Akshay Anurag

wie Sie selbst sagten, scheint electron-dl der populäre Weg zu sein, dies zu tun. Hauptsächlich von der Github-Seite: npm i -S electron-dl

const {BrowserWindow} = require('electron');
const {download} = require('electron-dl');
download(BrowserWindow.getFocusedWindow(), "http://url-to-asset", {directory:"c:/Folder"})
0
user2520818