2011-01-17 23 views
7

Estoy tratando de cargar los archivos con las características HTML5. Según la investigación, he encontrado que hay 3 formas diferentes de cargar los archivos,Detección de funciones de carga de archivos HTML5 en el navegador

  1. Al codificar el archivo como multiparte: Esto se hace cuando solo hay soporte para el lector de archivos.
  2. Enviar datos binarios utilizando el método de especificación XMLHTTP2 (AJAX): El nuevo método send(Blob/File) puede enviar datos binarios a través del cable.
  3. Objeto FormData: utilizando el método XMLHTTP(AJAX) send(FormData).

Ahora cruzada problemas del explorador y detecciones de características de fragmento de código como el de abajo es simple,

if(typeof FileReader == "undefined") 

Sin embargo no estoy seguro de cómo averiguar si el método send() de la AJAX en el navegador actual es apoyar send(FormData) or send(Blob/File) implementación del método Cómo encontrarlo? ¿Hay truco Object.property aquí? O algo diferente?

Gracias,

+1

Al leer la especificación, me parece que se admite el envío (Blob/File) si typeof FileReader! = 'Undefined', pero esto es pura especulación –

+0

http://stackoverflow.com/questions/2311887/how- to-determination-presence-of-html5-dragndrop-file-upload-api-like-the-one-from/2312859 # 2312859 –

+0

Lo anterior parece estar relacionado con el FileReader, ¿verdad? El objeto DataTranfer está en Drag Drop pero me gustaría saber cómo detectar el envío (File) donde podemos descubrir de alguna manera que el método send() de AJAX tiene soporte para el objeto File o no. –

Respuesta

2

para manejar datos binarios que se desea utilizar WebSockets. Esto es parte de la nueva HTML5 spec. Sin embargo hay un problema. A partir de mediados de diciembre de 2010, los WebSockets se desactivaron en todos los principales navegadores debido a una vulnerabilidad de envenenamiento de caché.

Lo último que escuché fue que todavía estaba siendo sorted out.

Para cargar el archivo antes de enviarlo a través de WebSockets, debe usar el FileReader API que es compatible con la última versión de cada navegador (a mi leal saber y entender).

Para comprobar si el FileReader se admite que debe probar como:

if (FileReader){ 
    // It's supported 
} 

También puede comprobar:

if (window.URL){ 
    // 
} 

una alternativa.

+0

if (FileReader) arroja un error en Safari. Pero esto funciona "if (window.FileReader)" – Dan

Cuestiones relacionadas