Saltar al contenido principal

Clase: DownloadItem

Clase: DownloadItem

Control de descargas de archivos desde fuentes remotas.

Proceso: Main
Esta clase no está exportada desde el módulo 'electron'. Sólo está disponible como un valor de retorno de otros métodos en la API de Electron.

DownloadItem es un EventEmitter que representa un ítem descargado en Electron. Se utiliza en el evento will-download de la clase Session, y permite a los usuarios controlar el elemento descargado.

/// In the main process.
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.webContents.session.on('will-download', (event, item, webContents) => {
// Set the save path, making Electron not to prompt a save dialog.
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')
} else {
console.log(`Download failed: ${state}`)
}
})
})

Eventos de Instancia

Evento: "updated"

Devuelve:

  • event
  • state string - Can be progressing or interrupted.

Aparece cuando la descara ha sido actualizada y no está terminada.

El state puede ser uno de los siguientes:

  • progressing - La descarga está en proceso.
  • interrupted - La descarga ha sido interrumpida y puede ser reanudada.

Evento: "done"

Devuelve:

  • event
  • state string - Can be completed, cancelled or interrupted.

Emitido cuando la descarga está en un estado terminal. Esto incluye una descarga completa, una descarga cancelada (a través de downloadItem.cancel()), y descargas interrumpidas que no pueden ser reanudadas.

El state puede ser uno de los siguientes:

  • completed - La descarga se ha completado con éxito.
  • cancelled - La descarga ha sido cancelada.
  • interrupted - La descarga ha sido interrumpida y no puede ser reanudada.

Métodos de Instancia

El objeto downloadItem tiene los siguientes métodos:

downloadItem.setSavePath(path)

  • path string - Set the save file path of the download item.

La API solo está disponible en la función callback will-download de la sesión. If path doesn't exist, Electron will try to make the directory recursively. Si el usuario no establece una ruta para guardar a través de la API, Electron usará la rutina original para determinar la ruta para guardar; esto usualmente genera un cuadro de dialogo para guardar.

downloadItem.getSavePath()

Devuelve string - La ruta de guardado del elemento descargado. This will be either the path set via downloadItem.setSavePath(path) or the path selected from the shown save dialog.

downloadItem.setSaveDialogOptions(options)

  • options SaveDialogOptions - Establece las opciones del diálogo de guardar archivos. Este objeto tiene la misma propiedad como el parámetro options de dialog.showSaveDialog().

This API allows the user to set custom options for the save dialog that opens for the download item by default. La API solo está disponible en la función callback will-download de la sesión.

downloadItem.getSaveDialogOptions()

Devuelve SaveDialogOptions - Devuelve el objeto previamente establecido por downloadItem.setSaveDialogOptions(options).

downloadItem.pause()

Pausa la descarga.

downloadItem.isPaused()

Devuelve boolean - Si la descarga está pausada.

downloadItem.resume()

Reanuda la descarga que ha sido pausada.

Note: To enable resumable downloads the server you are downloading from must support range requests and provide both Last-Modified and ETag header values. De lo contrario, resume() descartará los bytes recibidos anteriormente y reiniciará la descarga desde el principio.

downloadItem.canResume()

Devuelve boolean - Si la descarga puede ser reanudada o no.

downloadItem.cancel()

Cancela la operación de la descarga.

downloadItem.getURL()

Devuelve string - La URL de origen de donde el item fue descargado.

downloadItem.getMimeType()

Devuelve string - El tipo mime de los archivos.

downloadItem.hasUserGesture()

Devuelve boolean - Si la descarga tiene o no un gesto de usuario.

downloadItem.getFilename()

Devuelve string - El nombre de archivo del elemento de descarga.

Note: The file name is not always the same as the actual one saved in local disk. Si el usuario cambia el nombre del archivo en el cuadro de diálogo de guardado de la descarga, el nombre actual del archivo guardado será diferente.

downloadItem.getCurrentBytesPerSecond()

Returns Integer - The current download speed in bytes per second.

downloadItem.getTotalBytes()

Devuelve Integer - El tamaño total en bytes del elemento descargado.

Si se desconoce el tamaño, devuelve 0.

downloadItem.getReceivedBytes()

Devuelve Integer - Los bytes recibidos del elemento descargado.

downloadItem.getPercentComplete()

Returns Integer - The download completion in percent.

downloadItem.getContentDisposition()

Returns string - The Content-Disposition field from the response header.

downloadItem.getState()

Returns string - The current state. Can be progressing, completed, cancelled or interrupted.

Note: The following methods are useful specifically to resume a cancelled item when session is restarted.

downloadItem.getURLChain()

Returns string[] - The complete URL chain of the item including any redirects.

downloadItem.getLastModifiedTime()

Returns string - Last-Modified header value.

downloadItem.getETag()

Returns string - ETag header value.

downloadItem.getStartTime()

Devuelve Double - Número de segundos desde el UNIX epoch cuando se inició la descarga.

downloadItem.getEndTime()

Returns Double - Number of seconds since the UNIX epoch when the download ended.

Propiedades de la instancia

downloadItem.savePath

A string property that determines the save file path of the download item.

La propiedad solo esta disponible en la función callback will-download de la sesión. Si el usuario no establece la ruta de guardado a través de la propiedad, Electron usará la rutina original para determinar la ruta de guardado; esto suele generar un cuadro de diálogo para guardar.