Estoy escribiendo una extensión de Chrome que guarda algunos archivos usando el método chrome.downloads.download . Lo llamo desde mi background.js y funciona bien a menos que la opción "Preguntar dónde guardar cada archivo antes de descargar" del navegador esté habilitada o la opción saveAs como sea true .
Este es background.js que reproduce este problema:
chrome.downloads.download({ url: 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png', saveAs: false }, (itemId) => { chrome.downloads.onChanged.addListener((delta) => { if (itemId === delta.id) { console.log(delta) } }) }) Descarga el logotipo de Google cuando saveAs es false . En la consola, puedo ver los eventos primero con el estado in_progress y luego con el estado complete . Pero si configuro saveAs en true , habrá un evento con estado iterrupted y error USER_CANCELED . Chrome no abre el cuadro de diálogo "Guardar como" por alguna razón que no entiendo, incluso si "Preguntar dónde guardar cada archivo antes de descargarlo" está habilitado. Más aún, si "Preguntar dónde guardar cada archivo antes de descargarlo" está habilitado, la descarga se interrumpirá independientemente del valor de saveAs .
La documentación de Chrome describe la opción saveAs : "Utilice un selector de archivos para permitir que el usuario seleccione un nombre de archivo independientemente de si el nombre de filename está configurado o ya existe". Pero para mí no funciona independientemente del valor de la opción de nombre de filename . ¿Me estoy perdiendo de algo?
La versión de Chrome es la última a la fecha (Versión 102.0.5005.115 (compilación oficial) (64 bits)) y la versión de manifiesto es 3.