Por lo tanto, necesito generar vistas previas más pequeñas de los archivos de imagen que se cargarán y debo agregar "_preview" al final de cada nombre de archivo.
Actualmente estoy haciendo esto:
uploadFile.map((file) => { if (file.type.includes('image')) { console.log('Generating thumbnail for ' + file.name) const fileName = file.name.split('.').slice(0, -1).join('.') const fileExtension = file.name.split('.').pop() const compressedFile = new File( [file.slice(0, file.size, file.type)], fileName + '_preview.' + fileExtension, ) console.log('Generated file:', compressedFile) convert({ file: compressedFile, width: 300, height: 300, type: fileExtension, }) .then((resp) => { uploadFile.push(resp) }) .catch((error) => { // Error console.error('Error compressing ', file.name, '-', error) }) } })El problema es que a "compressedFile" le faltan algunos campos que estaban presentes en el archivo original, por lo que la función de conversión arroja el error "Tipo de archivo no compatible". Como puede ver, "type" y "webkitRelativePath" no se copian.
¿Alguien puede sugerir cómo puedo retener toda la información del archivo original y simplemente agregar _preview al final del nombre del archivo?
Me di cuenta de que File API también ofrece una opción para pasar el objeto "opciones" que puede especificar el tipo de archivo. Por ejemplo:
const file = new File(["foo"], "foo.txt", { type: "text/plain", });Fuente: https://developer.mozilla.org/en-US/docs/Web/API/File/File
para copiar código en js o duplicar, puede usar este código
//copyfile.js const fs = require('fs'); // destination will be created or overwritten by default. fs.copyFile('C:\folderA\myfile.txt', 'C:\folderB\myfile.txt', (err) => { if (err) throw err; console.log('File was copied to destination'); });