Skip to main content

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 Event
  • state string - progressing 또는 interrupted 상태일 수 있음

다운로드가 업데이트되었지만 완료되지 않은 경우 발생한다.

state는 다음 중 하나일 수 있다:

  • progressing - 다운로드가 진행 중임
  • interrupted - 다운로드가 중단되었으며 재개할 수 있음

이벤트: 'done'

반환값:

  • event Event
  • state 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)

  • options SaveDialogOptions - 파일 저장 대화상자 옵션을 설정한다. 이 객체는 dialog.showSaveDialog()options 매개변수와 동일한 속성을 가진다.

이 API는 기본적으로 열리는 다운로드 항목에 대한 저장 대화상자의 커스텀 옵션을 설정할 수 있게 해준다. 이 API는 세션의 will-download 콜백 함수 내에서만 사용할 수 있다.

downloadItem.getSaveDialogOptions()

SaveDialogOptions 객체를 반환한다. 이 객체는 이전에 downloadItem.setSaveDialogOptions(options)를 통해 설정된 값을 담고 있다.

downloadItem.pause()

다운로드를 일시 중지한다.

downloadItem.isPaused()는 다운로드가 일시 중지된 상태인지 여부를 boolean 값으로 반환한다.

downloadItem.resume()

일시 중지된 다운로드를 다시 시작한다.

참고: 다운로드 재개 기능을 사용하려면, 다운로드 대상 서버가 범위 요청(range requests)을 지원하고 Last-ModifiedETag 헤더 값을 제공해야 한다. 이 조건이 충족되지 않으면, 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은 원래의 절차를 따라 저장 경로를 결정한다. 일반적으로 이 경우 저장 대화 상자가 나타난다.