ich einen Chat-Server mit Schienen aufgebaut habe, socket.io und Knoten, die Benutzer Bilder zueinander senden kann, die ich versuche zu bekommen mit Amazon S3 zu arbeiten. Hier ist der entsprechende Code-Schnipsel aus dem Client und den Server:S3 uploads beschädigte Datei, wenn Strom mit
Auftraggeber:
var img_file = this.files[0]; //retrieved from file input
file_reader.onload = function(e) {
//console.log(img_file);
var extension = img_file.name.split('.');
extension = extension[extension.length-1];
get_user_id(username, function(to_id) {
socket.emit('message', {
from: "<%= @user.displayname %>",
fromid: <%= @user.id %>,
to: username,
toid: parseInt(to_id),
content: e.target.result,
type: 'image',
extension: extension,
size: img_file.size
});
})
};
file_reader.readAsBinaryString(img_file);
Server:
socket.on('message', function(message) {
console.log(message.type + " message received, sending to appropriate person: " + message.to);
if (message.type == 'text') {
//send message like normal
sendMessage(message);
}
else {
//it's an image, need additional processing
var blank_file = uuid.v4() + '-' + new Date().getTime() + '.' + message.extension;
var contents = message.content;
s3.putObject({
Bucket: 'bucket-name', //not the real bucket name
Key: blank_file,
ContentType: 'image/' + message.extension,
//ContentLength: message.size,
Body: contents
},
function(err, data) {
if (err) {
console.log(err)
}
else {
console.log('file uploaded to s3 successfully');
message.content = getS3Url(blank_file);
sendMessage(message);
}
})
}
}
Jedes Mal, wenn ich versuche, ein Bild mit diesem Code zu laden, scheint es, zu arbeiten, Aber wenn ich meinen s3-Bucket überprüfe und das Image öffne, sagt mein Betriebssystem, dass die Datei nicht lesbar oder beschädigt ist. Ich habe versucht, den ContentLength-Parameter zu verwenden, aber wenn ich das verwende, erhalte ich den Fehler "BadDigest: Der Content-MD5, den Sie angegeben haben, stimmt nicht mit dem überein, was wir erhalten haben."
Kann mir jemand helfen? Ich habe diesen Code zu arbeiten, richtig ohne s3, aber aus irgendeinem Grunde, den ich korrupt oder unkenntlich Dateien erhalten, da ich begann es zu benutzen.