NodeJS base64 image de codage/décodage pas assez de travail
J'ai essayé de gérer l'enregistrement des images Affichées à nodeJS (et le cadre express) à une base de données, et ont des difficultés. Ignorant le web traitement, je pense que j'ai réduit le problème à la manière de l'encodage base64 qui se passe dans le nœud. Je crois que le simpliste exemple ci-dessous devrait fonctionner, mais l'image de sortie est toujours corrompu.
L'exemple (1) charge d'une image (2) enregistre une copie de si (image_orig
) pour confirmer que le nœud peut lire le fichier correctement. Cela fonctionne toujours. (3) je prends l'image et base64 encode son contenu, (4), puis de le décoder. La finale de l'image de sortie (image_decoded
) est toujours corrompu.
Aider!
(node.js la version 0.6.0 sur OSX Lion)
console.log("starting");
process.chdir(__dirname);
var fs = require("fs");
var image_origial = "image.jpg";
fs.readFile(image_origial, function(err, original_data){
fs.writeFile('image_orig.jpg', original_data, function(err) {});
var base64Image = new Buffer(original_data, 'binary').toString('base64');
var decodedImage = new Buffer(base64Image, 'base64').toString('binary');
fs.writeFile('image_decoded.jpg', decodedImage, function(err) {});
});
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes de malentendu sur l'utilisation de l'encodage argument un peu. Si vous allez spécifier le codage binaire', alors vous avez besoin de le faire de manière cohérente. Mais vraiment, vous n'avez pas besoin du tout. Vous semblez confondre l'utilisation de Tampon vs chaînes binaires.
L'exemple suivant fonctionne, mais est très inefficace car le changement de codages tout le temps n'est pas nécessaire, mais je veux juste montrer à être clair. Si vraiment vous NE voulez avoir un codage spécifique, vous devez vous assurer que vous êtes cohérent. Chacune de ces fonctions a l'encodage d'un argument.
C'est la bonne façon de le faire. Tout garder comme un Tampon, sauf lorsque vous le faites en base64.
decodedImage
de flux de réponse?Légèrement meilleure solution sera de supprimer tous les types mime possible:
C'est plus de l' @Herve réponse.