好的,我有一个html <input type='file' />
,我试图将所选文件发送到服务器,这样我便可以保存。
但目前我只能获得<Buffer
,然后将<Buffer
转换为base64
值。我不想存储base64
,我实际上想将file
本身存储在服务器上,以便我可以将其作为<image src='folder/fileThatWasUploaded.png' />
引用。
目前,我正在使用socket.io
向聊天中的其他用户发送消息,并在后端发送node
以将消息保存到数据库等。
以下是我用来获取文件并将其发送到服务器的客户端代码。
$("#imgUpload").on('change',function(){
var selectedFile = this.files[0];
console.log(selectedFile);
// Send message to chat and save to mongo:
socket.emit('clientMessage', {
message: $('#chatMessage').val(),
name: user.name,
userId: user.userId,
image: selectedFile
});
// selectedFile.convertToBase64(function(base64){
// base64Img = base64;
// })
});
这是我用来从套接字接收发出的数据的服务器端代码,然后它会收到文件并将其保存到文件夹中。但是我得到<Buffer
而不是获取文件,我无法将<Buffer 89 50 4e 4 .....
写入文件夹。
// When user sends message, emit it back to others
socket.on('clientMessage', function(data) {
console.log(chatId);
// Send the message to database and emit back to other users
createMessage(data, chatId, function() {
console.log(data.image); // This prints out a buffer
// This is suppose to write the file, BUT IT CAN'T WRITE A BUFFER
// fs.writeFile("/public/images/", data.image, function(err) {
// if(err) {
// return console.log(err);
// }
// console.log("The file was saved!");
// });
有没有人对我能做什么有任何想法?
我已使用以下代码将buffer
转换为base64值,一旦转换为base64字符串,它将保存为.jpg
。这是一种好的有效方式吗?
fs.writeFile("imageConversion.jpg", new Buffer(data.image, "base64"), function(err) {
if(err){
console.log("Error: ", err);
return;
}
console.log("image converted and saved to dir");
});