Electronプログラムの特定の場所にファイルをダウンロードする必要があります。
このAPI を実装しようとしましたが、失敗しました。
次に、 公式API を実装しようとしましたが、実際にファイルのダウンロードを開始する方法がわかりませんでした。
特定の場所にファイルをダウンロードするにはどうすればよいですか、C:\Folder
?
ありがとう!
最終的に electron-dl を使用しました。
ダウンロードリクエストを送信するには(renderer.js
):
ipcRenderer.send("download", {
url: "URL is here",
properties: {directory: "Directory is here"}
});
の中に main.js
、コードは次のようになります。
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()));
});
});
「ダウンロード完了」リスナーはrenderer.js
、および次のようになります。
const {ipcRenderer} = require("electron");
ipcRenderer.on("download complete", (event, file) => {
console.log(file); // Full file path
});
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()));
});
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
});
あなたが自分で言ったように、electron-dlはそれをする一般的な方法のようです。主にgithubページから:npm i -S electron-dl
const {BrowserWindow} = require('electron');
const {download} = require('electron-dl');
download(BrowserWindow.getFocusedWindow(), "http://url-to-asset", {directory:"c:/Folder"})
ユーザーがElectronアプリケーションでファイルをダウンロードできるようにするには、次のことを行う必要があります。
パーティションからデフォルトセッションまたはユーザーのセッションを取得します。 セッション を参照してください
セッションオブジェクトのインスタンスを取得したら、 will-download
などのイベントをリッスンできます。これは、ユーザーがリンクをクリックしてダウンロードするときにSession
オブジェクトで発行されますファイルとファイルがダウンロードされます。
will-download
イベントは、ダウンロードされる item
を返します。このitem
には、必要なイベント(ダウンロード、失敗、一時停止など)および必要なメソッド(ファイルの保存先)などが含まれます。
さて、How to download a file to C:/folder
のクエリに関しては?
それに関して2つの選択肢があります。
item
オブジェクトを使用して、ファイルのダウンロード場所を設定できます will-download
。 item オブジェクトで setSavePath
メソッドを使用します。すべてのファイルのデフォルトのダウンロード場所を設定する場合は、セッションオブジェクトで setDownloadPath
を使用できます。次に、それがそのセッションのデフォルトパスになります。