J'utilise javascript, node.js et aws sdk. Il existe de nombreux exemples de téléchargement de fichiers existants vers S3 directement avec une URL signée, mais maintenant j'essaie de télécharger des chaînes et de créer un fichier dans S3, sans aucun fichier local sauvegardé. Toute suggestion, s'il vous plaît?chaîne de téléchargement direct du navigateur à s3 sans fichier local
2
A
Répondre
1
N'a pas essayé amazon-web-services
, amazon-s3
ou aws-sdk
, mais si vous êtes en mesure de télécharger File
ou FormData
objets que vous pouvez créer ou les deux à JavaScript et télécharger l'objet .
// create a `File` object
const file = new File(["abc"], "file.txt", {type:"text/plain"});
// create a `Blob` object
// will be converted to a `File` object when passed to `FormData`
const blob = new Blob(["abc"], {type:"text/plain"});
const fd = new FormData();
fd.append("file", blob, "file.txt");
1
Vous pouvez essayer quelque chose comme ceci:
var fs = require('fs');
exports.upload = function (req, res) {
var file = req.files.file;
fs.readFile(file.path, function (err, data) {
if (err) throw err; // Something went wrong!
var s3bucket = new AWS.S3({params: {Bucket: 'mybucketname'}});
s3bucket.createBucket(function() {
var params = {
Key: file.originalFilename, //file.name doesn't exist as a property
Body: data
};
s3bucket.upload(params, function (err, data) {
// Whether there is an error or not, delete the temp file
fs.unlink(file.path, function (err) {
if (err) {
console.error(err);
}
console.log('Temp File Delete');
});
console.log("PRINT FILE:", file);
if (err) {
console.log('ERROR MSG: ', err);
res.status(500).send(err);
} else {
console.log('Successfully uploaded data');
res.status(200).end();
}
});
});
});
};
2
S'il vous plaît suivre l'exemple ici http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property
Convertissez votre chaîne à tampon et de le transmettre. Ça devrait marcher. AWS sdk accepte les fichiers, pas les chaînes.
C'est tout ce dont nous avons besoin. Je vous remercie. – Bob