Quiero cargar archivos de texto de una extensión personalizada desde el disco usando p5js, preferiblemente con createFileInput() . Puedo guardar un archivo de texto de una extensión personalizada determinada usando createWriter() , al que luego puedo acceder y leer sin problemas en mi bloc de notas predeterminado. El problema al que me enfrento ocurre cuando intento cargar dicho archivo de texto usando createFileInput() , lo que conduce a un archivo de .type "" en lugar del "text" deseado. Por ejemplo,
function setup() { load = createFileInput(loadFile) noCanvas(); let content = 'Hello World'; let writer = createWriter('saveFile.ctxt'); writer.write([content]); writer.close(); } function loadFile(file) { console.log(file.type, file.data); } <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script> Emite "" data:application/octet-stream;base64,SGVsbG8gV29ybGQ= al cargar saveFile.ctxt, que no puedo comprender en absoluto.
El resultado deseado es "text" Hello World , independientemente de la extensión de archivo personalizada utilizada.
Puede usar un FileReader y el método FileReader.readAsText() , teniendo cuidado de pasarle file.file desde la devolución de llamada p5.js.
file.file es el "objeto de File subyacente. Todos los métodos de File normales se pueden llamar en este".
let fileInput; function setup() { noCanvas(); noLoop(); // Used to create the file: // (probably won't work in Stack Snippet) //const writer = createWriter("saveFile.ctxt"); //writer.write(["Hello World"]); //writer.close(); fileInput = createFileInput(file => { const reader = new FileReader(); reader.onload = e => { console.log(e.target.result); // => Hello World }; reader.readAsText(file.file); }); } <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script> Si tuviera que pasar un archivo .txt a la entrada, file.data ya tendrá el texto del resultado, sin necesidad de FileReader .