- Notifications
You must be signed in to change notification settings - Fork230
File and FileReader#325
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
joaquinelio merged 23 commits intojavascript-tutorial:masterfromdaguitosama:file_n_file_readerAug 3, 2020
Uh oh!
There was an error while loading.Please reload this page.
Merged
Changes fromall commits
Commits
Show all changes
23 commits Select commitHold shift + click to select a range
6d26688 Update article.md
daguitosamae740ed2 Update article.md
daguitosama77db0a0 File and FileReader
daguitosamae5dc34e Update 4-binary/04-file/article.md
vplentinax143cfe3 Update 4-binary/04-file/article.md
vplentinaxace97ff Update 4-binary/04-file/article.md
daguitosama395da05 Update 4-binary/04-file/article.md
daguitosama2b1c0a3 Update 4-binary/04-file/article.md
daguitosama0a9e2c3 Update 4-binary/04-file/article.md
daguitosamaf695ec6 Update 4-binary/04-file/article.md
daguitosamaa182dfc Update 4-binary/04-file/article.md
daguitosamae9d25b9 Update 4-binary/04-file/article.md
daguitosamaad5ba12 Update 4-binary/04-file/article.md
daguitosama7c96381 Update 4-binary/04-file/article.md
daguitosama8a71557 Update 4-binary/04-file/article.md
daguitosama8d3ba57 Update 4-binary/04-file/article.md
joaquinelio739302d Update 4-binary/04-file/article.md
joaquineliofad4a14 Update 4-binary/04-file/article.md
joaquineliof6842f3 Update 4-binary/04-file/article.md
joaquinelio1734b55 Update 4-binary/04-file/article.md
joaquinelio4d0a83a Update 4-binary/04-file/article.md
joaquinelio4c8eb82 Sincronizados los nros de linea
joaquinelio73d6236 sincronizado nros linea 2da parte
joaquinelioFile filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
114 changes: 57 additions & 57 deletions4-binary/04-file/article.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,27 +1,27 @@ | ||
| # Filey FileReader | ||
| Un [File](https://www.w3.org/TR/FileAPI/#dfn-file)hereda de`Blob`y extiende las capacidades relacionadas con el sistema de archivos. | ||
| Hay dos maneras de obtenerlo | ||
| Primero, hay un constructor, similaral de `Blob`: | ||
| ```js | ||
| new File(fileParts, fileName, [options]) | ||
vplentinax marked this conversation as resolved. Show resolvedHide resolvedUh oh!There was an error while loading.Please reload this page. | ||
| ``` | ||
| - **`fileParts`** --es un arraycon valores de tipoBlob/BufferSource/String. | ||
| - **`fileName`** --el nombre del archivo.. | ||
| - **`options`** --objeto opcional: | ||
| - **`lastModified`** --la marca de tiempo (fecha en mili-segundos, de tipo entero) de la última modificación. | ||
| Segundo, a menudo obtenemos un archivo mediante un `<input type="file">`o arrastrar y soltar u otrasinterfaces del navegador. En este caso el archivo obtiene la información del Sistema Operativo. | ||
| Como `File`(Archivo) hereda de`Blob`,objetos de tipo`File`tienen las mismas propiedades, mas: | ||
| - `name` --el nombre del archivo, | ||
| - `lastModified` --la marca de tiempo de la última modificación. | ||
| Así es como obtenemos un objeto `File`desde`<input type="file">`: | ||
| ```html run | ||
| <input type="file" onchange="showFile(this)"> | ||
| @@ -37,49 +37,49 @@ function showFile(input) { | ||
| ``` | ||
| ```smart | ||
| El inputpuede seleccionar varios archivos, por lo que`input.files`es un array de dichos archivos . En este caso tenemos un solo archivo por lo que solo es necesario usar `input.files[0]`. | ||
| ``` | ||
| ## FileReader | ||
| [FileReader](https://www.w3.org/TR/FileAPI/#dfn-filereader)es un objeto con el único porpósito de leer datos desde objetos de tipo`Blob` (por lo tanto`File`también). | ||
| El entrega los datos usando eventos debido a que leerlos desde el disco puede tomar un tiempo. | ||
| El constructor: | ||
| ```js | ||
| let reader = new FileReader(); //sin argumentos | ||
| ``` | ||
| Los métodos principales: | ||
| - **`readAsArrayBuffer(blob)`** --lee los datos en formato binario `ArrayBuffer`. | ||
| - **`readAsText(blob, [codificación])`** --lee los datos como una cadena de texto con la codificación dada (por defecto es`utf-8`). | ||
| - **`readAsDataURL(blob)`** --lee los datos binarios y los codifica como [Datos URIs] en base 64 (https://developer.mozilla.org/es/docs/Web/HTTP/Basics_of_HTTP/Datos_URIs). | ||
| - **`abort()`** --cancela la operación. | ||
| La opción del método`read*`depende de qué formato preferimos y cómo vamos a usar los datos. | ||
| - `readAsArrayBuffer` --para archivos binarios, en donde se hacen operaciones binarias de bajo nivel. Para operaciones de alto nivel, como slicing, `File`hereda de `Blob` por lo que podemos llamarlas directamente sin tener que leer. | ||
| - `readAsText` --para archivos de texto, cuando nesecitamos obtener una cadena. | ||
| - `readAsDataURL` --cuando necesitamos usar estos datos como valores de `src`en `img`u otras etiquetas html. Hay otra alternativa para leer archivos de ese tipo como discutimos en el capítulo <info:blob>: `URL.createObjectURL(file)`. | ||
| Mientras se va realizando la lectura, suceden varios eventos: | ||
| - `loadstart` --la carga comenzó. | ||
| - `progress` --ocurre mientras se lee. | ||
| - `load` --lectura completada, sin errores. | ||
| - `abort` -- `abort()`ha sido llamado. | ||
| - `error` --ha ocurrido un error. | ||
| - `loadend` --la lectura finalizó exitosa o no. | ||
| Cuando la lectura finaliza, podemos acceder al resultado como: | ||
| - `reader.result`el resultado (si fue exitoso) | ||
| - `reader.error`elerror (si hubo fallo). | ||
| Los mas ampliamente usados son seguramente`load`y `error`. | ||
| Un ejemplo de como leer un archivo: | ||
| ```html run | ||
| <input type="file" onchange="readFile(this)"> | ||
| @@ -104,35 +104,35 @@ function readFile(input) { | ||
| </script> | ||
| ``` | ||
| ```smart header="`FileReader`para blobs" | ||
| Como mencionamos en el capítulo <info:blob>, `FileReader`no solo lee archivos sino también cualquier blob. | ||
| Podemos usarlo para convertir un blob aotro formato: | ||
| - `readAsArrayBuffer(blob)` --a `ArrayBuffer`, | ||
| - `readAsText(blob, [encoding])` --a una cadena (una alternativa al `TextDecoder`), | ||
| - `readAsDataURL(blob)` --a Datos URI en base 64. | ||
| ``` | ||
| ```smart header="`FileReaderSync`está disponible dentro de Web Workers" | ||
| Para losWeb Workers también existe una variante síncrona de`FileReader` llamada [FileReaderSync](https://www.w3.org/TR/FileAPI/#FileReaderSync). | ||
| Sus metodos`read*`no generan eventos sino que devuelven un resultado como las funciones regulares. | ||
| Esto es solo dentro de unWeb Worker, debido a que demoras en llamadas síncronas mientras se lee el archivo en Web Worker no son tan importantes. No afectan la página. | ||
| ``` | ||
| ##Resumen | ||
| Los objetos`File`heredan de `Blob`. | ||
| Además de los métodos y propiedades de`Blob`, los objetos`File`también tienen las propiedades`name`y `lastModified`mas la habilidad interna de leer del sistema de archivos. Usualmente obtenemos los objetos`File`mediante la entrada del el usuario con`<input>`o eventosDrag'n'Drop (`ondragend`). | ||
| Los objetos`FileReader`pueden leer desde un archivo o unblob en uno de estos tres formatos: | ||
| - String (`readAsText`). | ||
| - `ArrayBuffer` (`readAsArrayBuffer`). | ||
| -Datos URI codificado enbase 64 (`readAsDataURL`). | ||
| En muchos casos no necesitamos leer el contenido de un archivo como hicimos con losblobs,podemos crear un enlace corto con`URL.createObjectURL(file)`y asignárselo a un `<a>`o `<img>`.De esta manera el archivo puede ser descargado, mostrado como una imagen o como parte de un canvas, etc. | ||
| Y si vamos a mandar un`File`por la red, es fácil utilizando APIs como`XMLHttpRequest`o `fetch`que aceptan nativamente objetos`File`. | ||
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.