2012-07-31 11 views
14

Bueno, el atributo de archivos de input[type=file] es de solo lectura. Por lo tanto, no puedo escribir mis datos blob en este elemento de entrada.Chrome: ¿Crear entrada de archivo desde blob con Javascript?

Pero si creo un nuevo elemento de archivo de entrada utilizando Javscript, ¿es posible insertar datos de blobs en la creación? Solo me interesan las soluciones que trabajan en chrome (extension) - otros navegadores no importan.

+3

que he probado recientemente, y no es posible. El único caso de uso para querer modificar el archivo en '' es cuando desea cambiar un archivo antes de cargarlo. Si está buscando un método para lograr eso, use la función 'FormData' de la especificación XMLHttpRequest nivel 2. Los ejemplos de código se pueden encontrar en http://stackoverflow.com/a/11628694 (¿posiblemente una pregunta duplicada?) Y http://stackoverflow.com/a/11382138 –

+0

@RobW Establecer el valor de un archivo de entrada también es una forma conveniente para indicar al usuario que su carga es válida/inválida, especialmente cuando tienen la opción de elegir un archivo del disco o crear el archivo en el navegador (es decir, a través de 'getUserMedia'). Ese es mi caso de uso: llenar un cuadro de entrada de archivo desde un micrófono cuando el navegador no lo admite de manera predeterminada (lo que hacen pocos navegadores). – Brilliand

Respuesta

1

new File() constructor está disponible en chromium/chrome 38+. Ver File Constructor Sample, File API.

var date = new Date(), 
 
    filename = "file-" + date.getTime() + ".html"; 
 

 
var generatedFile = new File(
 
    ["<!DOCTYPE html><html><body>" + filename + "</body></html>"] 
 
    , filename 
 
    , { 
 
    type: "text/html", 
 
    lastModified: date 
 
    } 
 
); 
 

 
var objUrl = URL.createObjectURL(generatedFile); 
 

 
console.log(generatedFile, objUrl); 
 

 
var reader = new FileReader(); 
 

 
reader.addEventListener("load", function(event) { 
 
    console.log(event.target.result) 
 
}); 
 

 
reader.readAsText(generatedFile);

Cuestiones relacionadas