Class: DownloadItem
Class: DownloadItem
원격 소스에서 파일 다운로드를 제어한다.
프로세스: 메인
이 클래스는 'electron'
모듈에서 직접 내보내지 않는다. Electron API의 다른 메서드 반환값으로만 사용할 수 있다.
DownloadItem
은 Electron에서 다운로드 항목을 나타내는 EventEmitter다. Session
클래스의 will-download
이벤트에서 사용되며, 사용자가 다운로드 항목을 제어할 수 있게 한다.
// 메인 프로세스에서
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.webContents.session.on('will-download', (event, item, webContents) => {
// 저장 경로를 설정해 Electron이 저장 대화상자를 표시하지 않게 한다.
item.setSavePath('/tmp/save.pdf')
item.on('updated', (event, state) => {
if (state === 'interrupted') {
console.log('다운로드가 중단되었지만 재개할 수 있음')
} else if (state === 'progressing') {
if (item.isPaused()) {
console.log('다운로드가 일시 중지됨')
} else {
console.log(`수신한 바이트: ${item.getReceivedBytes()}`)
}
}
})
item.once('done', (event, state) => {
if (state === 'completed') {
console.log('다운로드 성공')
} else {
console.log(`다운로드 실패: ${state}`)
}
})
})
인스턴스 이벤트
이벤트: 'updated'
반환값:
event
Eventstate
string -progressing
또는interrupted
상태일 수 있음
다운로드가 업데이트되었지만 완료되지 않은 경우 발생한다.
state
는 다음 중 하나일 수 있다:
progressing
- 다운로드가 진행 중임interrupted
- 다운로드가 중단되었으며 재개할 수 있음
이벤트: 'done'
반환값:
event
Eventstate
string -completed
,cancelled
,interrupted
중 하나
다운로드가 종료 상태에 도달했을 때 발생한다. 이는 완료된 다운로드, 취소된 다운로드(downloadItem.cancel()
를 통해), 그리고 재개할 수 없는 중단된 다운로드를 포함한다.
state
는 다음 중 하나일 수 있다:
completed
- 다운로드가 성공적으로 완료됨cancelled
- 다운로드가 취소됨interrupted
- 다운로드가 중단되었고 재개할 수 없음
인스턴스 메서드
downloadItem
객체는 다음과 같은 메서드를 제공한다:
downloadItem.setSavePath(path)
path
string - 다운로드 항목의 저장 파일 경로를 설정한다.
이 API는 세션의 will-download
콜백 함수 내에서만 사용할 수 있다.
경로가 존재하지 않으면, Electron은 해당 디렉터리를 재귀적으로 생성하려고 시도한다.
사용자가 이 API를 통해 저장 경로를 설정하지 않으면, Electron은 원래의 절차에 따라 저장 경로를 결정한다. 일반적으로 이 경우 저장 대화상자가 표시된다.
downloadItem.getSavePath()
는 다운로드 항목의 저장 경로를 문자열로 반환한다. 이 경로는 downloadItem.setSavePath(path)
를 통해 설정한 경로이거나, 표시된 저장 대화상자에서 선택한 경로가 된다.
downloadItem.setSaveDialogOptions(options)
이 API는 기본적으로 열리는 다운로드 항목에 대한 저장 대화상자의 커스텀 옵션을 설정할 수 있게 해준다. 이 API는 세션의 will-download
콜백 함수 내에서만 사용할 수 있다.
downloadItem.getSaveDialogOptions()
SaveDialogOptions
객체를 반환한다. 이 객체는 이전에 downloadItem.setSaveDialogOptions(options)
를 통해 설정된 값을 담고 있다.
downloadItem.pause()
다운로드를 일시 중지한다.
downloadItem.isPaused()
는 다운로드가 일시 중지된 상태인지 여부를 boolean
값으로 반환한다.
downloadItem.resume()
일시 중지된 다운로드를 다시 시작한다.
참고: 다운로드 재개 기능을 사용하려면, 다운로드 대상 서버가 범위 요청(range requests)을 지원하고 Last-Modified
및 ETag
헤더 값을 제공해야 한다. 이 조건이 충족되지 않으면, resume()
은 이전에 받은 데이터를 무시하고 처음부터 다운로드를 다시 시작한다.
downloadItem.canResume()
는 boolean
값을 반환한다. 이 값은 다운로드를 재개할 수 있는지 여부를 나타낸다.
downloadItem.cancel()
다운로드 작업을 취소한다.
downloadItem.getURL()
string
타입을 반환한다. 다운로드 항목의 원본 URL을 나타낸다.
downloadItem.getMimeType()
는 파일의 MIME 타입을 문자열로 반환한다.
downloadItem.hasUserGesture()
boolean
을 반환한다. 다운로드가 사용자 제스처로 시작되었는지 여부를 나타낸다.
downloadItem.getFilename()
string
타입을 반환한다. 다운로드 항목의 파일 이름을 나타낸다.
참고: 이 메서드가 반환하는 파일 이름이 항상 로컬 디스크에 저장된 실제 파일 이름과 일치하지는 않는다. 사용자가 다운로드 저장 대화상자에서 파일 이름을 변경할 경우, 저장된 파일의 실제 이름은 다를 수 있다.
downloadItem.getCurrentBytesPerSecond()
Integer
타입의 값을 반환한다. 이 값은 현재 다운로드 속도를 초당 바이트 단위로 나타낸다.
downloadItem.getTotalBytes()
Integer
를 반환한다. 다운로드 항목의 전체 크기를 바이트 단위로 나타낸다.
크기를 알 수 없는 경우 0을 반환한다.
downloadItem.getReceivedBytes()
는 다운로드 항목에서 현재까지 받은 바이트 수를 정수 형태로 반환한다.
downloadItem.getPercentComplete()
Integer
타입의 값을 반환한다. 다운로드 진행률을 백분율로 나타낸다.
downloadItem.getContentDisposition()
string
타입을 반환한다. 이 값은 응답 헤더의 Content-Disposition 필드에서 가져온다.
downloadItem.getState()
string
타입의 현재 상태를 반환한다. 가능한 값은 progressing
, completed
, cancelled
, interrupted
중 하나다.
참고: 아래 메서드들은 세션이 재시작되었을 때 cancelled
상태의 항목을 재개하는 데 유용하다.
downloadItem.getURLChain()
메서드는 아이템의 전체 URL 체인을 반환한다. 여기에는 리다이렉트가 포함된 모든 URL이 담겨 있다. 반환값은 string[]
타입이다.
downloadItem.getLastModifiedTime()
string
타입의 값을 반환한다. 이 값은 Last-Modified 헤더의 값을 나타낸다.
downloadItem.getETag()
string
타입의 ETag 헤더 값을 반환한다.
downloadItem.getStartTime()
Double
타입의 값을 반환한다. 다운로드가 시작된 시점을 유닉스 시간(UNIX epoch) 기준으로 초 단위로 나타낸다.
downloadItem.getEndTime()
Double
타입의 값을 반환한다. 이 값은 UNIX epoch(1970년 1월 1일 00:00:00 UTC) 이후로 다운로드가 완료된 시점까지의 시간을 초 단위로 나타낸다.
인스턴스 속성
downloadItem.savePath
다운로드 항목의 저장 파일 경로를 결정하는 string
타입 속성이다.
이 속성은 세션의 will-download
콜백 함수 내에서만 사용할 수 있다. 사용자가 이 속성을 통해 저장 경로를 설정하지 않으면, Electron은 원래의 절차를 따라 저장 경로를 결정한다. 일반적으로 이 경우 저장 대화 상자가 나타난다.