javascript - para - Descargar archivos como mega.co.nz




flash player chrome (2)

Mega usa varios métodos diferentes para hacer esto: (desde el 27 de noviembre de 2013)

  1. API del sistema de archivos (Polyfill de extensión de Chrome / Firefox)
  2. Adobe Flash SWF Filewriter (viejos navegadores de reserva)
  3. BlobBuilder (IE10 / IE11)
  4. Extensión de MEGA Firefox (obsoleta)
  5. Arraybuffer / Blob (en memoria) + a[download] (para navegadores compatibles con [descargar])
  6. MediaSource (solución de transmisión experimental)
  7. Blob almacenado en IndexedDB storage + a[download] (Firefox 20+, mejora sobre el método Blob en memoria)

(fuente: https://eu.static.mega.co.nz/js/download_6.js )

Hoy revisé mega.co.nz y estoy entusiasmado con algunas características. por ejemplo, en la página de descarga, descargará archivos en el navegador y luego los descifrará con javascript.

por ejemplo, vea este enlace para descargar un archivo png:

https://mega.co.nz/#!7JRgFJzJ!efpJGWuPhYczLexY19ex82nuwfs4sR_DG4JXddeClH4

en este enlace comenzará la descarga dentro del navegador. ¡revisé la pestaña de la red en el elemento de inspección que descargará partes del archivo con AJAX después de que haya completado todas las partes del archivo, las guardará todas en un archivo en la computadora automáticamente!

quiero saber lo que hacen? ¿Puedes explicar o vincular algún recurso sobre descargar archivos dentro del navegador de esa manera?

también puede hacerlo solo con javascript o debería usar algunos plugins flash o algo así?


here se presenta una implementación básica del descargador multiparte en el navegador usando las API de Blob y URL. Descarga un archivo en 4 solicitudes simultáneas y muestra el progreso también. Tenga en cuenta que parece que establecer un encabezado de range generalmente no es una buena idea para las solicitudes de XHR, eche un vistazo a este tema .

Durante la descarga:

Después de la descarga:

Otro tema interesante sería la implementación de la funcionalidad Pausa / Reanudar de Mega. La API XHR de los navegadores actuales no ofrece esa capacidad, por lo que la única posibilidad que tienes es hacer múltiples descargas de pequeños tamaños y renunciar a la parte descargada de tus pequeños fragmentos, como parece que también se hace en Mega. Pero la función de transmisión de fetch se puede usar para ese fin, no exploré eso todavía pero está documentado here .

Por cierto, eche un vistazo a estos proyectos increíbles:





download