Monday, November 21, 2016

Filereader Read As Binary Options

ReadAsBinaryString dice que los datos deben ser representados como una cadena binaria. Donde: cada byte está representado por un número entero en el rango 0..255. JavaScript no tiene un tipo binario y por lo que fueron con una cadena con la garantía de que ningún carácter almacenado en la cadena estaría fuera del rango 0..255. (Podrían haber ido con una serie de números en su lugar, pero quizás grandes cadenas son más eficientes en memoria que los grandes arreglos de números, ya que los números son de punto flotante.) Si está leyendo un archivo que es en su mayoría de texto en un guión occidental Principalmente inglés, por ejemplo), entonces esa cadena va a parecer mucho texto. Si lee un archivo con caracteres Unicode, debe notar una diferencia, ya que las cadenas de JavaScript son UTF-16 (detalles a continuación), por lo que algunos caracteres tendrán valores por encima de 255, mientras que una cadena binaria de acuerdo con la especificación File API no tendría Cualquier valor por encima de 255 (youd tiene dos caracteres individuales para los dos bytes del punto de código Unicode). Si está leyendo un archivo que no es texto en absoluto (una imagen, tal vez), probablemente obtendrá un resultado muy similar entre readAsText y readAsBinaryString. Pero con readAsBinaryString sabes que no habrá ningún intento de interpretar secuencias de varios bytes como caracteres. Usted no sabe que si usted utiliza readAsText. Porque readAsText utilizará una determinación de codificación para intentar averiguar qué es la codificación de los archivos y luego asignarla a las cadenas UTF-16 de JavaScripts. Puede ver el efecto si crea un archivo y lo almacena en algo distinto de ASCII o UTF-8. (En Windows puede hacer esto a través del Bloc de notas el Guardar como como un desplegable de codificación con Unicode en él, por lo que mirando a los datos que parecen significar UTF-16 Im seguro de Mac OS y editores nix tienen una característica similar.) Heres Una página que vuelca el resultado de la lectura de un archivo en ambos sentidos: Si utilizo eso con un archivo de prueba 1 2 3 almacenado en UTF-16, he aquí los resultados que obtengo: Como se puede ver, readAsText interpretó los caracteres y así conseguí 13 (la longitud de la prueba 1 2 3), y readAsBinaryString didnt, y así conseguí 28 (la BOM de dos bytes más dos bytes para cada carácter). Las cadenas de JavaScript son UTF-16 puede parecer una declaración extraña no son sólo Unicode No, una cadena de JavaScript es una serie de unidades de código UTF-16 que ve pares de sustitución como dos caracteres JavaScript individuales a pesar de que, de hecho, el par de sustitución como un Todo es sólo un carácter. Vea el enlace para más detalles. DigitalFresh: La cadena es el dato binario. Como comentaste, publiqué un ejemplo que puede ayudar. El Javascript no tiene un tipo quotbinaryquot y así que fueron con una secuencia con la garantía que ningún carácter almacenado en la secuencia estaría fuera del rango 0..255. (Ellos podrían haber ido con una matriz de números en su lugar, pero no lo hicieron.) El ejemplo muestra cómo obtener el valor bruto de un quotcharacterquot de la cadena. Ndash T. J. Debido a que este material es asíncrono, no puede lanzar excepciones que usted necesita para mirar la interfaz para ver si hay alguna forma asíncrona que informa de los errores. Y de hecho, FileReader tiene onerror para esto. Cuando usas un archivo: 4747 URL, tu dominio de documento es nulo, lo que tiende a cerrarte de muchas cosas (no conozco los detalles, nunca lo hago), especialmente. Cuando el SOP entra en él. Estoy bastante seguro de que está hasta el navegador, al menos por ahora, ya que la parte de seguridad de la especificación es todavía provisional: w3.org/TR/FileAPI/security-discussion Pero no esperaba que funcionara. Ndash T. J. Muchas gracias TJCrowder - Suprimí mi comentario para evitar que otros se dejen engañar por mi simplificación excesiva, y gracias por publicar los detalles - Estoy seguro de que otros encontrarán sus comentarios mucho más útiles (y leyendo el Artículo es realmente una buena idea, como usted dice, si uno es mucking alrededor en esta área). Ndash Brian M. Hunt Dec 30 14 a las 14: 16Working con archivos en JavaScript, parte 2: FileReader Publicado en 15 de mayo 2012 por Nicholas C. Zakas En mi post anterior. Presenté el uso de archivos en JavaScript, centrándome específicamente en cómo obtener acceso a los objetos de archivo. Estos objetos contienen metadatos de archivo obtenidos sólo cuando el usuario opta por cargar un archivo o arrastra y suelta un archivo en la página web. Una vez que haya archivos, sin embargo, el siguiente paso es leer los datos de ellos. El tipo FileReader El tipo FileReader tiene un solo trabajo: para leer datos de un archivo y almacenarlos en una variable JavaScript. La API está intencionalmente diseñada para ser similar a XMLHttpRequest ya que ambos están cargando datos desde un recurso externo (fuera del explorador). La lectura se realiza asincrónicamente para no bloquear el navegador. Hay varios formatos que un FileReader puede crear para representar los datos del archivo, y el formato debe ser solicitado al pedir que el archivo sea leído. La lectura se realiza llamando a uno de estos métodos: readAsText () 8211 devuelve el contenido del archivo como texto sin formato readAsBinaryString () 8211 devuelve el contenido del archivo como una cadena de datos binarios codificados (8211 en lugar de readAsArrayBuffer () obsoleto readAsArrayBuffer () El contenido del archivo como un ArrayBuffer (bueno para los datos binarios, como las imágenes) readAsDataURL () 8211 devuelve el contenido del archivo como una URL de datos Cada uno de estos métodos inicia un archivo similar al método send () del objeto XHR que inicia una solicitud HTTP. Como tal, debe escuchar el evento de carga antes de comenzar a leer. El resultado de la lectura siempre está representado por event. target. result. Por ejemplo: Este ejemplo simplemente lee el contenido de un archivo y lo emite en texto sin formato a la consola. El controlador onload se llama cuando el archivo se lee correctamente mientras que el controlador onerror se llama si el archivo wasn8217t leído por alguna razón. La instancia de FileReader está disponible dentro del controlador de eventos a través de event. target y it8217s recomienda usarlo en lugar de referenciar directamente la variable del lector. La propiedad de resultado contiene el contenido del archivo en caso de éxito y el error contiene información de error sobre la operación fallida. Lectura de URI de datos Puede utilizar la misma configuración básica para leer un URI de datos. Los URI de datos (a veces denominados URL de datos) son una opción interesante si, por ejemplo, desea mostrar una imagen que se acaba de leer desde el disco. Podría hacerlo con el siguiente código: Este código simplemente inserta una imagen que se leyó desde el disco en una página. Dado que el URI de datos contiene todos los datos de imagen, puede pasar directamente al atributo src de una imagen y mostrarse en la página. Puede cargar alternativamente la imagen y dibujarla también en un ltcanvasgt: Este código carga los datos de la imagen en un nuevo objeto de imagen y luego los utiliza para dibujar la imagen en un lienzo (especificando tanto el ancho como la altura como 100). Los URI de datos se utilizan generalmente para este propósito, pero se pueden utilizar en cualquier tipo de archivo. El caso de uso más común para leer un archivo en un URI de datos es mostrar el contenido del archivo en una página web inmediatamente. Lectura ArrayBuffers El ArrayBuffer tipo 1 se introdujo por primera vez como parte de WebGL. Un ArrayBuffer representa un número finito de bytes que se pueden utilizar para almacenar números de cualquier tamaño. La forma en que se leen los datos desde un ArrayBuffer es utilizando una vista específica, como Int8Array. Que trata los bytes subyacentes como una colección de enteros de 8 bits firmados o Float32Array. Que trata los bytes subyacentes como una colección de números de punto flotante de 32 bits. Estos se llaman matrices de matrices 2. que le obligan a trabajar con un tipo numérico específico en lugar de contener cualquier tipo de datos (como con arrays tradicionales). Utiliza un ArrayBuffer principalmente cuando se trata de archivos binarios, para tener un control más fino sobre los datos. It8217s más allá del alcance de este post para explicar todos los entresijos de ArrayBuffer. Sólo darse cuenta de que usted puede leer un archivo en un ArrayBuffer bastante fácilmente si lo necesita. Puede pasar un ArrayBuffer directamente a un método send () de XHR para enviar los datos sin procesar al servidor (you8217ll tiene que leer estos datos de la solicitud en el servidor para reconstruir el archivo), siempre y cuando su navegador apoye completamente XMLHttpRequest Level 2 3 (navegadores más recientes, incluyendo Internet Explorer 10 y Opera 12). A continuación Lectura de datos de un archivo utilizando un FileReader es bastante simple. Si sabe cómo utilizar XMLHttpRequest. No hay razón por la que puedas estar leyendo datos de archivos. En la siguiente parte de esta serie, you8217ll aprenderá más sobre el uso de los eventos FileReader y entender más sobre posibles errores. Referencias Exención de responsabilidad: Cualquier punto de vista y opiniones expresadas en este artículo son las de Nicholas C. Zakas y no reflejan, de ninguna manera, las de mi empleador, mis colegas Wrox Publishing. OReilly Publishing. O cualquier otra persona. Hablo sólo para mí, no para ellos. Mensajes recientes Información adicionalTable de contenido Localización: Lectura de archivos en JavaScript mediante las API de archivos Tabla de contenido Localización Puede que su navegador no admita la funcionalidad de este artículo. Introducción HTML5 finalmente proporciona una forma estándar de interactuar con archivos locales, a través de la especificación de la API de archivos. Como ejemplo de sus capacidades, la API de archivos podría utilizarse para crear una vista previa en miniatura de las imágenes cuando se envían al servidor o permitir que una aplicación guarde una referencia de archivo mientras el usuario está desconectado. Además, puede utilizar la lógica del lado del cliente para comprobar si un archivo mimetype de subidas compara su extensión de archivo o si restringe el tamaño de una subida. La especificación proporciona varias interfaces para acceder a archivos desde un sistema de archivos local: Archivo - un archivo individual proporciona información de sólo lectura como nombre, tamaño de archivo, tipo MIME y una referencia al identificador de archivo. FileList: una secuencia de objetos de tipo array. (Piense que el archivo de tipos de ltinput multiplegt o arrastra un directorio de archivos desde el escritorio). Blob - Permite cortar un archivo en rangos de bytes. Cuando se utiliza junto con las estructuras de datos anteriores, la interfaz FileReader puede utilizarse para leer de forma asíncrona un archivo a través del manejo de eventos JavaScript familiar. Por lo tanto, es posible monitorear el progreso de una lectura, detectar errores y determinar cuándo una carga está completa. De muchas maneras, las API se asemejan al modelo de eventos XMLHttpRequest s. Selección de archivos Lo primero que debe hacer es comprobar que su navegador admite totalmente la API de archivos: Por supuesto, si su aplicación sólo utilizará algunas de estas API, modifique este fragmento en consecuencia. Uso de la entrada de formularios para la selección La forma más sencilla de cargar un archivo es utilizar un elemento de tipo de archivo de tipo ltinput estándar. JavaScript devuelve la lista de objetos File seleccionados como FileList. Heres un ejemplo que utiliza el atributo múltiple para permitir la selección de varios archivos a la vez: Ejemplo. Uso de la entrada de formulario para la selección. Pruébelo Utilizando arrastrar y soltar para seleccionar Otra técnica para cargar archivos es arrastrar y soltar nativo desde el escritorio al navegador. Podemos modificar ligeramente el ejemplo anterior para incluir el soporte de arrastrar y soltar. Ejemplo. Uso de arrastrar y soltar para seleccionar. Try It Drop files here Nota: Algunos navegadores tratan los elementos de tipo de archivo ltinput como objetos de destino nativos. Intente arrastrar archivos al campo de entrada en el ejemplo anterior. Lectura de archivos Ahora viene la parte divertida Después de haber obtenido una referencia de archivo, instanciar un objeto FileReader para leer su contenido en la memoria. Cuando termina la carga, el evento onload de los lectores se activa y su atributo de resultado se puede utilizar para acceder a los datos del archivo. FileReader incluye cuatro opciones para leer un archivo de forma asincrónica: FileReader. readAsBinaryString (BlobFile) - La propiedad resultante contendrá los datos del archivo / blobs como una cadena binaria. Cada byte está representado por un número entero en el rango 0..255. FileReader. readAsText (BlobFile, optencoding) - La propiedad resultante contendrá los datos del archivo / blobs como una cadena de texto. De forma predeterminada, la cadena se decodifica como UTF-8. Utilizar el parámetro de codificación opcional puede especificar un formato diferente. FileReader. readAsDataURL (BlobFile) - La propiedad resultante contendrá los datos de archivo / blobs codificados como una URL de datos. FileReader. readAsArrayBuffer (BlobFile): la propiedad resultante contendrá los datos de archivo / blobs como un objeto ArrayBuffer. Una vez que uno de estos métodos de lectura se llama en su objeto FileReader, el onloadstart. en progreso. en carga. Onabort Onerror Y onloadend se puede utilizar para seguir su progreso. El ejemplo siguiente filtra las imágenes de la selección de usuarios, llama a reader. readAsDataURL () en el archivo y genera una miniatura configurando el atributo src en una URL de datos. Ejemplo. Lectura de archivos. Pruebe este ejemplo con un directorio de imágenes Cortar un archivo En algunos casos, leer la totalidad del archivo en la memoria no es la mejor opción. Por ejemplo, digamos que quería escribir un uploader de archivos asíncronos. Una forma posible de acelerar la subida sería leer y enviar el archivo en pedazos separados del intervalo del byte. El componente del servidor sería entonces responsable de reconstruir el contenido del archivo en el orden correcto. Por suerte para nosotros, la interfaz de archivo admite un método de corte para apoyar este caso de uso. El método toma un byte de inicio como su primer argumento, terminando el byte como su segundo y una cadena de tipo de contenido de opción como tercero. En el ejemplo siguiente se muestra la lectura de fragmentos de un archivo. Algo que vale la pena notar es que utiliza el onloadend y comprueba el evt. target. readyState en lugar de usar el evento onload. Ejemplo. Rebanar un archivo. Probarlo Leer los octetos: 1-5 6-15 7-8 archivo completo Supervisar el progreso de una lectura Una de las cosas agradables que obtenemos de manera gratuita cuando se utiliza el manejo de eventos asíncronos es la capacidad de monitorear el progreso del archivo leído útil para Archivos grandes, errores de captura, y averiguar cuando una lectura está completa. Los eventos onloadstart y onprogress pueden utilizarse para supervisar el progreso de una lectura. El ejemplo siguiente muestra la visualización de una barra de progreso para supervisar el estado de una lectura. Para ver el indicador de progreso en acción, pruebe un archivo grande o uno de una unidad remota. Ejemplo. Seguimiento del progreso de una lectura. Prueba Consejo. Para ver realmente este indicador de progreso en acción, intente un archivo grande o un recurso en una unidad remota. Siguiente stepsFileReader. readAsBinaryString () No estándar Esta función no es estándar y no está en una pista de normas. No lo utilice en sitios de producción que se enfrentan a la Web: no funcionará para todos los usuarios. También puede haber grandes incompatibilidades entre las implementaciones y el comportamiento puede cambiar en el futuro. El método readAsBinaryString se utiliza para iniciar la lectura del contenido de la Blob o archivo especificado. Cuando se termina la operación de lectura, el readyState se convierte en DONE. Y se activa el loadend. En ese momento, el atributo de resultado contiene los datos binarios sin formato del archivo. Tenga en cuenta que este método ya está obsoleto según el borrador de trabajo del 12 de julio de 2012 del W3C. Parámetros de sintaxis blob Blob o File desde el que leer. Ejemplo de especificaciones Este método se ha eliminado del estándar FileAPI. FileReader. readAsArrayBuffer () debe ser utilizado en su lugar. File API Resumen Esta especificación proporciona una API para la representación de objetos de archivo en aplicaciones web, así como programaticamente la selección de ellos y el acceso a sus datos. Esto incluye: Una interfaz FileList, que representa una matriz de archivos seleccionados individualmente del sistema subyacente. La interfaz de usuario para la selección se puede invocar a través de ltinput typefilegt. Es decir, cuando el elemento de entrada está en el estado de carga de archivo HTML. Una interfaz Blob, que representa datos binarios crudos inmutables y permite el acceso a rangos de bytes dentro del objeto Blob como una Blob independiente. Una interfaz de archivo, que incluye atributos informativos de sólo lectura sobre un archivo como su nombre y la fecha de la última modificación (en disco) del archivo. Una interfaz FileReader, que proporciona métodos para leer un archivo o un Blob. Y un modelo de eventos para obtener los resultados de estas lecturas. Un esquema de URL para su uso con datos binarios, como archivos, para que puedan referenciarse dentro de las aplicaciones web. Además, esta especificación define objetos que se utilizarán dentro de aplicaciones web hiladas para la lectura síncrona de archivos. La sección de requisitos y casos de uso REQ cubre la motivación detrás de esta especificación. Esta API está diseñada para ser utilizada en conjunto con otras API y elementos de la plataforma web, en particular: XMLHttpRequest (por ejemplo, con un método de envío sobrecargado para los argumentos de archivo o Blob), postMessage. DataTransfer (parte de la API de arrastrar y soltar definida en HTML) y Web Workers. Además, debe ser posible obtener mediante programación una lista de archivos del elemento de entrada cuando se encuentra en el estado de carga de archivo HTML. Estos tipos de comportamientos se definen en las especificaciones afiliadas apropiadas. Estado de este documento Esta sección describe el estado de este documento en el momento de su publicación. Otros documentos pueden reemplazar este documento. Una lista de las publicaciones actuales del W3C y la última revisión de este informe técnico se puede encontrar en el índice de informes técnicos del W3C en www. w3.org/TR/. Si tiene comentarios para esta especificación, envíelos a public-webappsw3.org con un Subject: prefijo de FileAPI. Ver Bugzilla para estas especificaciones de errores abiertos. Este documento fue publicado por el Grupo de Trabajo de Aplicaciones Web como un borrador de trabajo. Este documento está destinado a convertirse en una Recomendación del W3C. Si desea hacer comentarios sobre este documento, envíelos a public-webappsw3.org (suscribirse a archivos). Todos los comentarios son bienvenidos. La publicación como borrador de trabajo no implica aprobación por parte de los miembros del W3C. Este es un borrador de documento y puede ser actualizado, reemplazado u obsoleto por otros documentos en cualquier momento. No es apropiado citar este documento como algo que no sea trabajo en curso. Este documento fue producido por un grupo que operaba bajo la Política de Patentes del W3C del 5 de febrero de 2004. W3C mantiene una lista pública de cualquier divulgación de patente hecha en relación con los productos del grupo que la página también incluye instrucciones para revelar una patente. Una persona que tiene conocimiento real de una patente que el individuo cree que contiene Reclamaciones Esenciales debe revelar la información de acuerdo con la sección 6 de la Política de Patentes del W3C. Este documento se rige por el documento de proceso del W3C del 1 de agosto de 2014. Tabla de contenidos 1. Introducción Esta sección es informativa. Las aplicaciones web deben tener la capacidad de manipular lo más amplio posible un rango de entrada de usuario, incluidos los archivos que un usuario desee subir a un servidor remoto o manipular dentro de una aplicación web enriquecida. Esta especificación define las representaciones básicas para archivos, listas de archivos, errores generados por el acceso a archivos y maneras programáticas de leer archivos. Además, esta especificación también define una interfaz que representa datos en bruto que se pueden procesar asincrónicamente en el subproceso principal de los agentes de usuario conformes. Las interfaces y la API definidas en esta especificación se pueden utilizar con otras interfaces y API expuestas a la plataforma web. La interfaz de archivo representa los datos de archivo normalmente obtenidos del sistema de archivos subyacente (OS), y la interfaz Blob (objeto grande binario - un nombre introducido originalmente en las API de Google en Gears de Google) representa datos crudos inmutables. Las lecturas de archivos o blob deben suceder de forma asincrónica en el subproceso principal, con una API síncrona opcional utilizada en aplicaciones web con subprocesos. Una API asíncrona para leer archivos impide el bloqueo y la congelación de la interfaz de usuario en un subproceso principal de agentes de usuario. Esta especificación define una API asíncrona basada en un modelo de evento para leer y acceder a un archivo o datos Blob. Un objeto FileReader proporciona métodos de lectura asíncronos para acceder a los datos de los archivos mediante los atributos del manejador de eventos y la activación de eventos. El uso de eventos y controladores de eventos permite a los bloques de código independientes la capacidad de supervisar el progreso de la lectura (que es particularmente útil para unidades remotas o montadas, donde el rendimiento de acceso a archivos puede variar de unidades locales) y las condiciones de error que pueden surgir durante la lectura De un archivo. Un ejemplo será ilustrativo. En el ejemplo siguiente, los diferentes bloques de código controlan las condiciones de progreso, error y éxito. 2. Conformidad Todo en esta especificación es normativo excepto para ejemplos y secciones marcados como informativos. Las palabras clave DEBEN, NO DEBEN, NECESARIAS, NO DEBERÁN, RECOMENDADAS, MAYAS y OPCIONALES en este documento se deben interpretar como se describe en palabras clave para su uso en RFCs para indicar los niveles de requisitos RFC2119. Las siguientes clases de conformidad son definidas por esta especificación: agente de usuario conforme Un agente de usuario se considera un agente de usuario conforme si satisface todos los criterios de MUST, REQUIRED y SHALL de esta especificación que se aplican a las implementaciones. Esta especificación utiliza tanto los términos agente de usuario conforme como agente de usuario para referirse a esta clase de producto. Los agentes de usuario pueden implementar algoritmos en estas especificaciones de cualquier manera deseada, siempre y cuando el resultado final sea indistinguible del resultado que se obtendría de los algoritmos de especificaciones. Los agentes de usuario que utilizan ECMAScript para implementar las API definidas en esta especificación deben implementarlas de una manera consistente con los Enlaces ECMAScript definidos en la especificación Web IDL WEBIDL, ya que esta especificación utiliza esa especificación y terminología. 3. Dependencias Esta especificación se basa en especificaciones subyacentes. Un agente de usuario que cumpla debe soportar al menos el subconjunto de la funcionalidad definida en DOM4 en la que esta especificación se basa en particular, debe soportar EventTarget. DOM4 Un agente de usuario conforme debe soportar la especificación Progress Events. El acceso de datos en las operaciones de lectura se habilita a través de eventos de progreso. Un agente de usuario que cumpla debe soportar por lo menos el subconjunto de la funcionalidad definida en HTML en la que esta especificación se basa en particular, debe soportar bucles de eventos y atributos de manejador de eventos. HTML Un agente de usuario que cumpla también debe ser una implementación conforme de los fragmentos IDL en esta especificación, tal como se describe en la especificación Web IDL. WebIDL Las partes de esta especificación se basan en la especificación Web Workers para aquellas partes de esta especificación, la especificación Web Workers es una dependencia normativa. Trabajadores 4. Terminología 4.1 Términos El documento de términos y algoritmos. Descarga de los pasos de limpieza del documento. Atributos del controlador de eventos. Tipo de evento del controlador de eventos. Origen de escritura eficaz. Objeto de configuración estable. Eventos. tarea. Fuente de tareas. URL. Lista global de trabajos de limpieza de secuencias de comandos. Limpieza global de scripts. Cola una tarea. UTF - 8. UTF - 16. Clon estructurado. Recopilar una secuencia de caracteres y convertir una cadena a ASCII en minúscula son como se define en HTML de la especificación HTML. Los términos origen y origen son los definidos por la especificación ORIGIN. Cuando esta especificación dice que para terminar un algoritmo el agente de usuario debe terminar el algoritmo después de terminar el paso que está encendido, y volver de él. Los métodos de lectura asíncronos definidos en esta especificación pueden volver antes de que el algoritmo en cuestión se termine, y pueden ser terminados por una llamada abort (). El término lanzar en esta especificación, ya que se refiere a excepciones, se utiliza tal como se define en la especificación DOM4 DOM4. El término byte en esta especificación se utiliza tal como se define en la especificación de codificación de especificación de codificación. El término chunk en esta especificación se utiliza tal como se define en la especificación Streams Specification Streams. El término objeto de contexto en esta especificación se utiliza tal como se define en la especificación DOM4 DOM4. Los términos URL. URL relativa. URL base. Analizador de URL. Analizador básico de la URL. esquema. anfitrión. Relativo. Datos del esquema. Y el fragmento son según lo definido por el URL de la especificación del URL de WHATWG. Los términos solicitan. respuesta. Cuerpo y petición de origen cruzado son como se definen en la especificación de búsqueda WHATWG Fetch especificación. El término Unix Epoch se utiliza en esta especificación para referirse al tiempo 00:00:00 UTC el 1 de enero de 1970 (o 1970-01-01T00: 00: 00Z ISO 8601) este es el mismo tiempo que es conceptualmente 0 en ECMA - 262 ECMA-262. Los algoritmos y pasos de esta especificación usan las siguientes operaciones matemáticas: max (a, b) devuelve el máximo de a y b, y siempre se realiza en números enteros como se definen en WebIDL WebIDL en el caso de max (6,4) El resultado es 6. Esta operación también se define en ECMAScript ECMA-262. Min (a, b) devuelve el mínimo de ayb, y siempre se realiza en enteros como se definen en WebIDL WebIDL en el caso de min (6,4) el resultado es 4. Esta operación también se define en ECMAScript ECMA -262. Las comparaciones matemáticas tales como lt (menor que), (menor o igual a) y gt (mayor que) son como en ECMAScript ECMA-262. 5. La interfaz Blob y los datos binarios Un objeto Blob se refiere a una secuencia de bytes y tiene un atributo de tamaño que es el número total de bytes en la secuencia de bytes y un atributo de tipo, que es una cadena codificada en ASCII en minúsculas que representa El tipo de medio de la secuencia de bytes. Una Blob debe tener un estado de legibilidad. Que es uno de ABIERTO o CERRADO. Un Blob que se refiere a una secuencia de bytes, incluyendo uno de 0 bytes, se dice que está en el estado de legibilidad OPENED. Se dice que una Blob está cerrada si se ha llamado a su método cerrado. Se dice que una Blob que está cerrada está en el estado de legibilidad CLOSED. Cada Blob debe tener un estado de instantánea interna. Que debe establecerse inicialmente en el estado del almacenamiento subyacente, si existe tal almacenamiento subyacente y debe conservarse mediante clon estructurado. Se puede encontrar una definición normativa adicional del estado de la instantánea para los archivos. 5.1. Constructores El constructor Blob () se puede invocar con cero o más parámetros. Cuando se invoca el constructor Blob (), los agentes de usuario deben ejecutar los siguientes pasos del constructor Blob: Si se invoca con cero parámetros, devuelve un nuevo objeto Blob con su estado de legibilidad establecido en OPENED. Consistente en 0 bytes, con el tamaño establecido en 0 y con el tipo establecido en la cadena vacía. De lo contrario, el constructor se invoca con una secuencia blobParts. Sea una secuencia. Deje que los bytes sean una secuencia vacía de bytes. Sea longitud una longitud s. Para 0 i lt longitud. Repita los pasos siguientes: Sea elemento el i-ésimo elemento de a. Si elemento es un DOMString. Ejecute las siguientes subetapas: Sea s el resultado de convertir el elemento a una secuencia de caracteres Unicode Unicode utilizando el algoritmo para hacerlo en WebIDL WebIDL. Codifique s como UTF-8 y agregue los bytes resultantes a bytes. El algoritmo de WebIDL WebIDL reemplaza sustituto incomparable en una cadena UTF-16 no válida con caracteres de sustitución UFFFD. Existen escenarios cuando el constructor Blob puede resultar en alguna pérdida de datos debido a secuencias de caracteres perdidas o codificadas. Si elemento es un ArrayBufferView TypedArrays, convierta a una secuencia de byteLength bytes desde el ArrayBuffer subyacente. Comenzando en el byteOffset de ArrayBufferView TypedArrays y añadiendo esos bytes a bytes. Si element es ArrayBuffer TypedArrays, convierta a una secuencia de bytes de byteLength y añada esos bytes a bytes. Si elemento es una Blob. Agrega los bytes que representa a bytes. Se ignora el tipo del elemento de matriz Blob. Si se proporciona el miembro de tipo del argumento options opcional y no es la cadena vacía, ejecute los siguientes sub-pasos: Sea t el miembro del diccionario de tipo. Si t contiene caracteres fuera del rango U0020 a U007E, entonces establezca t en la cadena vacía y regrese de estos subpasos. Convierta cada carácter en t a minúsculas usando la conversión de una cadena al algoritmo ASCII en minúsculas WebIDL. Devolver un objeto Blob con su estado de legibilidad establecido en OPENED. Haciendo referencia a bytes como su secuencia de bytes asociada, con su tamaño ajustado a la longitud de bytes. Y su tipo ajustado al valor de t desde los subetapas anteriores. El tipo t de un Blob se considera un tipo MIME parsable si la cadena codificada en ASCII que representa el tipo de objetos Blob, cuando se convierte en una secuencia de bytes, no devuelve indefinida para el algoritmo de tipo MIME de análisis MIMESNIFF. 5.1.1. Parámetros del Constructor El constructor Blob () se puede invocar con los siguientes parámetros: Una secuencia blobParts que toma cualquier número de los siguientes tipos de elementos y en cualquier orden: Un BlobPropertyBag opcional que toma un miembro: type. La cadena codificada en ASCII en minúsculas que representa el tipo de medio de la Blob. Las condiciones normativas para este miembro se proporcionan en los pasos del constructor Blob. Siguen ejemplos de uso del constructor. 5.2. Atributos Devuelve el tamaño de la secuencia de bytes en número de bytes. Al obtener, los agentes de usuario conformes deben devolver el número total de bytes que pueden ser leídos por un objeto FileReader o FileReaderSync, o 0 si el Blob no tiene bytes que leer. Si la Blob tiene un estado de legibilidad de CLOSED, el tamaño debe devolver 0. La cadena codificada en ASCII en minúsculas que representa el tipo de medio de la Blob. Al obtener, los agentes de usuario deben devolver el tipo de un Blob como una cadena codificada en ASCII en minúsculas, de modo que cuando se convierte en una secuencia de bytes, es un tipo MIME parsable MIMESNIFF o la cadena vacía - 0 bytes - - si no se puede determinar el tipo. El atributo de tipo puede ser establecido por la propia aplicación web a través de la invocación del constructor ya través de la llamada de división en estos casos, las condiciones normativas adicionales para este atributo se encuentran en los pasos del constructor Blob. Los pasos del Constructor de archivos. Y el algoritmo del método de corte respectivamente. Los agentes de usuario también pueden determinar el tipo de Blob. Especialmente si la secuencia de bytes es de un archivo en disco en este caso, las condiciones normativas adicionales están en las guías de tipo de archivo. El valor booleano que indica si el Blob está en el estado de legibilidad CERRADO. Al obtener, los agentes de usuario deben devolver false si la Blob está en estado de legibilidad OPENED. Y true si el Blob está en el estado de legibilidad CLOSED como resultado del método close que se llama. 5.3. Métodos y parámetros 5.3.1. El método slice El método slice devuelve un nuevo objeto Blob con bytes que van desde el parámetro de inicio opcional hasta el parámetro final opcional, pero sin incluirlo, y con un atributo de tipo que es el valor del parámetro opcional contentType. Debe actuar de la siguiente manera: Sea O el objeto de contexto Blob en el que se está llamando el método de corte. El parámetro de inicio opcional es un valor para el punto de inicio de una llamada de división, y debe tratarse como una posición de orden de bytes, con la posición cero que representa el primer byte. Los agentes de usuario deben procesar la rebanada con el inicio normalizado de acuerdo con lo siguiente: Si el parámetro de inicio opcional no se utiliza como parámetro al realizar esta llamada, deje que el parámetroStart sea 0. Si el inicio es negativo, ). Else, dejó que relativoStart sea min (comienzo, tamaño). El parámetro final opcional es un valor para el punto final de una llamada de división. Los agentes de usuario deben procesar la rebanada con el extremo normalizado de acuerdo con lo siguiente: Si el parámetro final opcional no se utiliza como parámetro al realizar esta llamada, permita que relativoEnd sea tamaño. Si final es negativo, deje que relativoEnd sea max ((fin de tamaño), 0) Else, let relativoEnd be min (end, size) El parámetro opcional contentType se utiliza para establecer la cadena codificada en ASCII en minúsculas que representa el tipo de medio de la Gota. 6.2. 7.1. 8.2.


No comments:

Post a Comment