Estoy tratando de cargar archivos en amazon s3 usando nodejs. Pude cargar y crear un cubo. Sin embargo, el valor de retorno de la carga no contiene la URL que vincula a ese archivo. Alguien sabe como obtener la url? y cómo hacer que el archivo sea público para poder acceder a él porque estoy tratando de cargar imágenes en mi sitio web
var multer = require('multer'); var AWS= require('aws-sdk'); var fs = require('fs'); var S3FS = require('s3fs'); var s3fsImpl = new S3FS('bucketName',{ accessKeyId:'************', secretAccessKey:'***************' }); s3fsImpl.create(); var multiparty = require('connect-multiparty'), multipartyMiddleware = multiparty(); router.use(multipartyMiddleware); router.post('/upload',function(req,res){ console.log(JSON.stringify(req.files)); var file = req.files; var stream = fs.createReadStream(file.fileUpload.path); return s3fsImpl.writeFile(file.fileUpload.originalFilename, stream, 'public-read').then(function(data){ fs.unlink(file.fileUpload.path, function(err){ console.error(err); }) }); res.send('Sucessfully uploaded to Amazon S3 server'); });Si usa JavaScript/Node, debe usar el SDK oficial de AWS en lugar de S3FS.
Por ejemplo: función putObject()
Al usar esa función, hay un parámetro ACL que especifica si el objeto debe ser público:
ACL: 'private | public-read | public-read-write | authenticated-read | aws-exec-read | bucket-owner-read | bucket-owner-full-control',Como alternativa, se puede usar una Política de depósito para otorgar acceso a depósitos completos o subdirectorios.