NodeJS mySQL Insert Blob
J'ai besoin d'un peu d'aide
avec NodeJS et MySQL goutte d'insertion.
Voici l'extrait de code que j'utilise
fs.open(temp_path, 'r', function (status, fd) {
if (status) {
console.log(status.message);
return;
}
var buffer = new Buffer(getFilesizeInBytes(temp_path));
fs.read(fd, buffer, 0, 100, 0, function (err, num) {
var query ="INSERT INTO `files` (`file_type`, `file_size`, `file`) VALUES ('img', " + getFilesizeInBytes(temp_path) + ",'" + buffer + "' );";
mySQLconnection.query(query, function (er, da) {
if (er)throw er;
});
});
});
Requête permet d'insérer le fichier dans la table, puis-je obtenir la bonne taille de fichier, mais lorsque j'essaie
pour récupérer le fichier et l'ouvrir ( par exemple un fichier PDF ), je reçois un message disant que
le fichier est corrompu.
Je dois être en train de faire quelque chose de mal avec le tampon de lecture à partir du fichier.
Vous ne pouvez pas simplement concaténer un tampon dans une requête. En fait, vous ne devriez jamais concaténer quoi que ce soit dans une requête. Comment insérer une Goutte dépend entièrement de ce que MySQL bibliothèque que vous utilisez. Pouvez-vous nous en dire?
OriginalL'auteur user1972670 | 2014-09-20
Vous devez vous connecter pour publier un commentaire.
Essayez de remplacer:
avec:
Vous pouvez également modifier
file: buffer
àfile: buffer.slice(0, 100)
puisque vous vous contentez de lire les 100 premiers octets du fichier. Sibuffer.length > 100
alors vous pouvez vous retrouver avec un tas de poubelles supplémentaires octets après les 100 premiers octets dansbuffer
.OriginalL'auteur mscdex
Merci mscdex pour le fragment de code.
Était le problème, comme vous l'avez souligné, que je lisais seulement 100 premiers octets de données.
BTW, merci pour l'extrait de code et voici l'ensemble de la solution.
J'espère que ça peut aider quelqu'un 🙂
OriginalL'auteur user1972670
Pour les petits fichiers, vous pouvez essayer de code ci-dessous:
OriginalL'auteur magicpanda
essayez d'utiliser multer tampon:
OriginalL'auteur jales cardoso