2011-04-03 13 views
10

tengo éxito de carga de archivos usando Node.js y el módulo formidable, sin embargo, el archivo que consiguió ahorrar en el disco está en algún tipo de formato de una mala (mala codificación) por ejemplo, si subo una imagen no puedo verla, si cargo un archivo txt gedit proporcione el siguiente mensaje: "gedit no ha podido detectar la codificación de caracteres. Por favor, compruebe que no está tratando de abrir un archivo binario Seleccione una codificación de caracteres del menú y vuelva a intentarlo ".archivo de carga utilizando NodeJS y ganglios formidable

Aquí está el código:

form.encoding = 'utf-8'; 
form.parse(req, function(err, fields, files) { 
    fs.writeFile('test.js', files.upload,'utf8', function (err) { 
      if (err) throw err; 
      console.log('It\'s saved!'); 
    }); 
}); 

Respuesta

18

El problema es que la files.upload no es el contenido del archivo, es una instancia de la Clase de archivo de nodo formidable.

Mira:

https://github.com/felixge/node-formidable/blob/master/lib/file.js

En lugar de tratar de escribir el archivo en el disco nuevo, sólo puede acceder a la ruta de subida de archivos como este y usar fs.rename() para moverlo donde quiere:

fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; }); 
Cuestiones relacionadas