Einfache Datei-Uploads für S3 über die aws-sdk und Node/Express
Ich bin an einem Verlust, was ich falsch mache, hier ist was ich habe:
HTML
<html>
<body>
<form method="POST" action="/upload" enctype="multipart/form-data">
<div class="field">
<label for="image">Image Upload</label>
<input type="file" name="image" id="image">
</div>
<input type="submit" class="btn" value="Save">
</form>
</body>
</html>
Port
5000 ist meine Node.js - server-port.
In diesem Beispiel verwende ich POST
zu /upload
und es funktioniert gut.
module.exports = function(app, models) {
var fs = require('fs');
var AWS = require('aws-sdk');
var accessKeyId = process.env.AWS_ACCESS_KEY || "xxxxxx";
var secretAccessKey = process.env.AWS_SECRET_KEY || "+xxxxxx+B+xxxxxxx";
AWS.config.update({
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
var s3 = new AWS.S3();
app.post('/upload', function(req, res){
var params = {
Bucket: 'makersquest',
Key: 'myKey1234.png',
Body: "Hello"
};
s3.putObject(params, function (perr, pres) {
if (perr) {
console.log("Error uploading data: ", perr);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
});
}
Möchte ich nun veröffentlichen Sie die Datei, die ich bin POST
ing, das ist, wo das problem entsteht.
module.exports = function(app, models) {
var fs = require('fs');
var AWS = require('aws-sdk');
var accessKeyId = process.env.AWS_ACCESS_KEY || "xxxxxx";
var secretAccessKey = process.env.AWS_SECRET_KEY || "+xxxxxx+B+xxxxxxx";
AWS.config.update({
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
var s3 = new AWS.S3();
app.post('/upload', function(req, res){
var path = req.files.image.path;
fs.readFile(path, function(err, file_buffer){
var params = {
Bucket: 'makersquest',
Key: 'myKey1234.png',
Body: file_buffer
};
s3.putObject(params, function (perr, pres) {
if (perr) {
console.log("Error uploading data: ", perr);
} else {
console.log("Successfully uploaded data to myBucket/myKey");
}
});
});
});
}
Den Fehler den ich bekomme, ist:
TypeError: Cannot read property 'Pfad' undefined
Als eine Angelegenheit von der Tat files
ist komplett leer.
Ich bin angenommen, ich bin fehlt etwas ziemlich offensichtlich, aber ich kann nicht scheinen, um es zu finden.
InformationsquelleAutor der Frage abritez | 2013-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie etwas wie
multer
zu handhaben multipart Upload.Hier ein Beispiel einer streaming-Datei-upload auf s3 mit
aws-sdk
.InformationsquelleAutor der Antwort theRemix
Letzte Antwort @ Dec-2016 [Neu]
Verwenden multer-s3 für multipart-Upload auf s3 ohne speichern auf der lokalen Festplatte als:
Letzte Antwort @ Mar-2016 [Alt -]
Bearbeitet 1 verwenden
[email protected]
und[email protected]
für folgende snippet:Für die vollständige Ausführung B. Klon express_multer_s3 repo und führen
node app
.InformationsquelleAutor der Antwort Zeeshan Hassan Memon
Klingt wie Sie möglicherweise nicht über die express bodyParser middleware-setup. Können Sie Ihre gesamte server-Datei (app.js, server.js,, was haben Sie)
InformationsquelleAutor der Antwort Rob Bennet
Statt multipart/form-Daten, können Sie versuchen, mit image/png oder was auch immer der korrekte mime-type ist.
InformationsquelleAutor der Antwort Vibgy
Müssen Sie so etwas wie multer in Ihre middleware zu handhaben
multipart/form-data
für Sie, und füllen Siereq.files
. Von doco:Nun
req.files.image.path
sollten aufgefüllt werden, in Ihremapp.post
Funktion.InformationsquelleAutor der Antwort morloch
Sieht es aus wie deine req.- Dateien.Bild ist nicht definiert. console.log out-was req.- Dateien.Bild zurück und sehen, wenn Sie können gehen von dort aus.
InformationsquelleAutor der Antwort M1Reeder
Dieser stack-overflow war die beste Antwort, die ich gefunden, die erklären, genau, wie man Knoten S3 arbeiten.
AWS Fehlende Anmeldeinformationen, wenn ich versuche, etwas schicken zu meiner S3-Bucket (Node.js)
Diese neben einigen mehr Sachen, die ich hatte zu hacken, um es allen zu arbeiten. In meiner situation ich war mit einem mittleren stack-Anwendung, so dass mein Node-Datei, die ich arbeitete, war eine route-Datei.
meine aconfig.json-Datei mit den amazon-Anmeldedaten sieht wie folgt aus:
Den endgültigen Inhalt der route-Datei Aussehen wie in der Datei unten eingefügt.
Dieser dauerte eine Weile, bis Sie endlich funktioniert, aber wenn Sie setup die route unten ist, aktualisieren Sie das sampleFile JSON auf eine echte Datei auf Ihrem system und traf es mit Postboten wird es veröffentlichen einer Datei auf Ihrem S3-Konto.
Hoffe, das hilft
InformationsquelleAutor der Antwort JasonPerr