2016-01-19 08:23:17 +00:00
|
|
|
|
# DownloadItem
|
|
|
|
|
|
|
|
|
|
`DownloadItem`は、Electronでアイテムのダウンロードを示すEventEmitterです。 `Session`モジュールの`will-download`イベントで使用され、ダウンロードしたアイテムをコントロールすることができます。
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
// In the main process.
|
2016-10-03 22:48:04 +00:00
|
|
|
|
const {BrowserWindow} = require('electron')
|
|
|
|
|
let win = new BrowserWindow()
|
|
|
|
|
win.webContents.session.on('will-download', (event, item, webContents) => {
|
2016-01-19 08:23:17 +00:00
|
|
|
|
// Set the save path, making Electron not to prompt a save dialog.
|
2016-10-03 22:48:04 +00:00
|
|
|
|
item.setSavePath('/tmp/save.pdf')
|
|
|
|
|
|
|
|
|
|
item.on('updated', (event, state) => {
|
|
|
|
|
if (state === 'interrupted') {
|
|
|
|
|
console.log('Download is interrupted but can be resumed')
|
|
|
|
|
} else if (state === 'progressing') {
|
|
|
|
|
if (item.isPaused()) {
|
|
|
|
|
console.log('Download is paused')
|
|
|
|
|
} else {
|
|
|
|
|
console.log(`Received bytes: ${item.getReceivedBytes()}`)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
item.once('done', (event, state) => {
|
|
|
|
|
if (state === 'completed') {
|
|
|
|
|
console.log('Download successfully')
|
2016-01-19 08:23:17 +00:00
|
|
|
|
} else {
|
2016-10-03 22:48:04 +00:00
|
|
|
|
console.log(`Download failed: ${state}`)
|
2016-01-19 08:23:17 +00:00
|
|
|
|
}
|
2016-10-03 22:48:04 +00:00
|
|
|
|
})
|
|
|
|
|
})
|
2016-01-19 08:23:17 +00:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## イベント
|
|
|
|
|
|
|
|
|
|
### イベント: 'updated'
|
|
|
|
|
|
|
|
|
|
`downloadItem`が更新されたときに出力されます。
|
|
|
|
|
|
|
|
|
|
### イベント: 'done'
|
|
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
|
* `state` String
|
|
|
|
|
* `completed` - ダウンロードが成功で完了
|
|
|
|
|
* `cancelled` - ダウンロードをキャンセル
|
|
|
|
|
* `interrupted` - ファイルサーバーとの接続が切れてエラー
|
|
|
|
|
|
|
|
|
|
ダウンロードが終了状態になったときに出力されます。終了状態には、ダウンロードの完了、ダウンロードのキャンセル(`downloadItem.cancel()`経由)、レジュームできないダウンロードの中断などです。
|
|
|
|
|
|
|
|
|
|
## メソッド
|
|
|
|
|
|
|
|
|
|
`downloadItem`オブジェクトは次のメソッドを持ちます:
|
|
|
|
|
|
|
|
|
|
### `downloadItem.setSavePath(path)`
|
|
|
|
|
|
|
|
|
|
* `path` String - ダウンロードアイテムの保存ファイルパスを設定します。
|
|
|
|
|
|
|
|
|
|
APIはセッションの`will-download`コールバック関数のみで提供されます。API経由で保存パスを設定しなかった場合、Electronは保存パスを決めるための元のルーチン(通常は保存ダイアログ)を使用します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.pause()`
|
|
|
|
|
|
|
|
|
|
ダウンロードをポーズします。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.resume()`
|
|
|
|
|
|
|
|
|
|
ポーズしたダウンロードを再開します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.cancel()`
|
|
|
|
|
|
|
|
|
|
ダウンロード操作をキャンセルします。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.getURL()`
|
|
|
|
|
|
|
|
|
|
どのURLからアイテムをダウンロードするのかを示す`String`を返します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.getMimeType()`
|
|
|
|
|
|
|
|
|
|
mimeタイプを示す`String`を返します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.hasUserGesture()`
|
|
|
|
|
|
|
|
|
|
ダウンロードがユーザージェスチャーを持っているかどうかを示す`Boolean`を返します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.getFilename()`
|
|
|
|
|
|
|
|
|
|
ダウンロードアイテムのファイル名を示す`String`を返します。
|
|
|
|
|
|
|
|
|
|
**Note:** ファイル名はローカルディスクに実際に保存するものといつも同じとは限りません。ダウンロード保存ダイアログでユーザーがファイル名を変更していると、保存するファイルの実際の名前は異なります。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.getTotalBytes()`
|
|
|
|
|
|
|
|
|
|
ダウンロードアイテムの合計バイトサイズを示す`Integer`を返します。
|
|
|
|
|
サイズが不明な場合、0を返します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.getReceivedBytes()`
|
|
|
|
|
|
|
|
|
|
ダウンロードしたアイテムの受信バイト数を示す`Integer`を返します。
|
|
|
|
|
|
|
|
|
|
### `downloadItem.getContentDisposition()`
|
|
|
|
|
|
|
|
|
|
レスポンスヘッダーからContent-Dispositionを示す`String`を返します。
|