2011-07-27 19 views
9

Deseo implementar las cargas reanudables con Html5, y todo parece funcionar, excepto identificar que el archivo que se va a cargar es el mismo que ya se cargó parcialmente. Idealmente, tendría un algoritmo hash del lado del cliente que genera una identificación única; sin embargo, no pude encontrar una implementación funcional y parece demasiado lento para archivos grandes (como el que estoy tratando).Subidas reanudables con la API de carga de archivos HTML5 -

A continuación, pensé en usar la ruta al archivo como el identificador único, pero no vi ninguna forma de obtenerlo de la API. el nombre del archivo, incluso si se considera el nombre del archivo por usuario, no puede ser exclusivo porque los usuarios tienden a tener nombres comunes para los archivos. ¿Alguien puede pensar en una solución para esto?

Respuesta

1

Supongo que la mejor opción es un simple hash (MD5 es demasiado lento en los archivos de gran tamaño como útil).

Una alternativa: nombre las cargas por nombre de archivo (y algún tipo de numeración en ejecución cuando se cargan múltiples archivos con el mismo nombre, por ejemplo, archivo-1, archivo-2, archivo-3) y verifique los bytes aleatorios en el archivo ya cargado y el archivo local. Por ejemplo:

  1. encontrar todos los archivos con el mismo nombre de archivo (sin incluir la numeración numérica corriendo)
  2. comparación 10 bytes cada 10 MB desde el servidor con el archivo local, si estos bytes coinciden se puede sentir la confianza suficiente acerca este es el archivo correcto.

Por supuesto, esto podría dar lugar a un archivo incorrecto, pero también puede provocar hash.

0

como se menciona en How to resume a paused or broken file upload en Mozilla Hacks, tal vez se puede almacenar el archivo en el navegador usando IndexedDB para que pueda reanudar la carga sin necesidad de que el usuario que vuelva a seleccionar el archivo.

Para obtener un tutorial sobre cómo almacenar archivos con IndexedDB, consulte Storing images and files in IndexedDB.

+0

Su idea parece ser la única forma de continuar cargando sin que el usuario vuelva a seleccionar el archivo. Pero supongo que esta no será una solución viable cuando se trata de archivos de gran tamaño, como dice la pregunta. También puede haber algunas consideraciones con respecto al tamaño máximo: http://stackoverflow.com/questions/5692820/max-size-in-indexeddb. – zpon

Cuestiones relacionadas