2015-11-16 03:15:21 +00:00
|
|
|
# DownloadItem
|
|
|
|
|
2016-04-30 16:53:21 +00:00
|
|
|
> 원격 소스로부터의 파일 다운로드를 제어합니다.
|
|
|
|
|
2016-11-07 13:55:29 +00:00
|
|
|
프로세스: [메인](../tutorial/quick-start.md#main-process)
|
|
|
|
|
2016-06-12 18:42:26 +00:00
|
|
|
`DownloadItem`은 `EventEmitter`를 상속받았으며 Electron의 다운로드 아이템을
|
|
|
|
표현합니다. 이 클래스 객체는 `Session` 클래스의 `will-download` 이벤트에 사용되며
|
|
|
|
사용자가 다운로드 아이템을 다룰 수 있도록 도와줍니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
```javascript
|
2015-11-16 04:41:47 +00:00
|
|
|
// 메인 프로세스
|
2016-05-10 07:27:14 +00:00
|
|
|
win.webContents.session.on('will-download', (event, item, webContents) => {
|
2015-11-16 03:15:21 +00:00
|
|
|
// Set the save path, making Electron not to prompt a save dialog.
|
2016-06-12 18:42:26 +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) => {
|
2016-05-10 18:14:06 +00:00
|
|
|
if (state === 'completed') {
|
2016-06-12 18:42:26 +00:00
|
|
|
console.log('Download successfully')
|
2015-11-16 03:15:21 +00:00
|
|
|
} else {
|
2016-06-12 18:42:26 +00:00
|
|
|
console.log(`Download failed: ${state}`)
|
2015-11-16 03:15:21 +00:00
|
|
|
}
|
2016-06-12 18:42:26 +00:00
|
|
|
})
|
|
|
|
})
|
2015-11-16 03:15:21 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
## Events
|
|
|
|
|
|
|
|
### Event: 'updated'
|
|
|
|
|
2016-06-12 18:42:26 +00:00
|
|
|
Returns:
|
|
|
|
|
|
|
|
* `event` Event
|
|
|
|
* `state` String
|
|
|
|
|
|
|
|
다운로드가 업데이트되었으며 아직 끝나지 않았을 때 발생하는 이벤트입니다.
|
|
|
|
|
|
|
|
`state`는 다음 중 하나가 될 수 있습니다:
|
|
|
|
|
|
|
|
* `progressing` - 다운로드가 진행중입니다.
|
|
|
|
* `interrupted` - 다운로드가 중지되었으며 다시 재개할 수 있습니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### Event: 'done'
|
|
|
|
|
2016-06-12 18:42:26 +00:00
|
|
|
Returns:
|
|
|
|
|
2015-11-16 03:15:21 +00:00
|
|
|
* `event` Event
|
|
|
|
* `state` String
|
|
|
|
|
2015-11-19 19:46:05 +00:00
|
|
|
다운로드가 종료될 때 발생하는 이벤트입니다. 이 이벤트는 다운로드 중 문제가 발생하여
|
|
|
|
중단되거나, 모두 성공적으로 완료된 경우, `downloadItem.cancel()` 같은 메서드를 통해
|
|
|
|
취소하는 경우의 종료 작업이 모두 포함됩니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
2016-06-12 18:42:26 +00:00
|
|
|
`state`는 다음 중 하나가 될 수 있습니다:
|
|
|
|
|
|
|
|
* `completed` - 다운로드가 성공적으로 완료되었습니다.
|
|
|
|
* `cancelled` - 다운로드가 취소되었습니다.
|
|
|
|
* `interrupted` - 다운로드가 중지되었으며 다시 재개할 수 있습니다.
|
|
|
|
|
2015-11-16 03:15:21 +00:00
|
|
|
## Methods
|
|
|
|
|
2015-11-16 04:41:47 +00:00
|
|
|
`downloadItem` 객체는 다음과 같은 메서드를 가지고 있습니다:
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.setSavePath(path)`
|
|
|
|
|
2015-11-16 04:41:47 +00:00
|
|
|
* `path` String - 다운로드 아이템을 저장할 파일 경로를 지정합니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
2015-11-19 19:46:05 +00:00
|
|
|
이 API는 세션의 `will-download` 콜백 함수에서만 사용할 수 있습니다. 사용자가 API를
|
|
|
|
통해 아무 경로도 설정하지 않을 경우 Electron은 기본 루틴 파일 저장을 실행합니다.
|
|
|
|
(파일 대화 상자를 엽니다)
|
2015-11-16 03:15:21 +00:00
|
|
|
|
2016-09-15 16:27:10 +00:00
|
|
|
### `downloadItem.getSavePath()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `String` - 다운로드 아이템의 저장 경로. 이 경로는
|
2016-09-15 16:27:10 +00:00
|
|
|
`downloadItem.setSavePath(path)`로 설정된 경로나 나타난 저장 대화상자에서 선택한
|
|
|
|
경로 중 하나가 될 수 있습니다.
|
|
|
|
|
2015-11-16 03:15:21 +00:00
|
|
|
### `downloadItem.pause()`
|
|
|
|
|
2015-11-16 04:41:47 +00:00
|
|
|
다운로드를 일시 중지합니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
2016-06-12 18:42:26 +00:00
|
|
|
### `downloadItem.isPaused()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `Boolean` - 다운로드가 일시 중지되었는지 여부.
|
2016-06-12 18:42:26 +00:00
|
|
|
|
2015-11-16 03:15:21 +00:00
|
|
|
### `downloadItem.resume()`
|
|
|
|
|
2015-11-16 04:41:47 +00:00
|
|
|
중디된 다운로드를 재개합니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
2016-06-12 18:42:26 +00:00
|
|
|
### `downloadItem.canResume()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `Boolean` - 다운로드를 재개할 수 있는지 여부.
|
2016-06-12 18:42:26 +00:00
|
|
|
|
2015-11-16 03:15:21 +00:00
|
|
|
### `downloadItem.cancel()`
|
|
|
|
|
2015-11-16 04:41:47 +00:00
|
|
|
다운로드를 취소합니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.getURL()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `String` - 아이템을 다운로드 한 URL.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.getMimeType()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `String` - 파일의 MIME 타입.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.hasUserGesture()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `Boolean` - 유저 제스쳐(작업)로인한 다운로드인지 여부.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.getFilename()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `String` - 다운로드 아이템의 파일 이름.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
2015-11-19 19:46:05 +00:00
|
|
|
**참고:** 실제 파일 이름과 로컬 디스크에 저장되는 파일의 이름은 서로 다를 수 있습니다.
|
|
|
|
예를 들어 만약 사용자가 파일을 저장할 때 파일 이름을 바꿨다면 실제 파일 이름과 저장
|
|
|
|
파일 이름은 서로 달라지게 됩니다.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.getTotalBytes()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `Integer` - 다운로드 아이템의 바이트 단위의 전체 크기. 크기를 알 수
|
|
|
|
없으면 0.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.getReceivedBytes()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Returns `Integer` - 다운로드 아이템의 수신된 바이트.
|
2015-11-16 03:15:21 +00:00
|
|
|
|
|
|
|
### `downloadItem.getContentDisposition()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Return `String` - 응답 헤더의 Content-Disposition 필드.
|
2016-06-12 18:42:26 +00:00
|
|
|
|
|
|
|
### `downloadItem.getState()`
|
|
|
|
|
2016-09-29 15:52:40 +00:00
|
|
|
Return `String` - 현재 상태.
|
2016-06-12 18:42:26 +00:00
|
|
|
|
|
|
|
값은 다음이 될 수 있습니다:
|
|
|
|
|
|
|
|
* `progressing` - 다운로드가 진행중입니다.
|
|
|
|
* `completed` - 다운로드가 성공적으로 완료되었습니다.
|
|
|
|
* `cancelled` - 다운로드가 취소되었습니다.
|
|
|
|
* `interrupted` - 다운로드가 중지되었습니다.
|