Tag: amazon s3

节点应用程序stream文件直接上传到amazon s3

你好:)我正在看我的节点应用程序streamHTTP POST文件直接上传到Amazon S3桶的可行性。 我正在寻找使用Formidable和Knox。 我不确定的部分是,S3要求您知道传输前文件中的总字节数。 我认为唯一的方法就是使用HTML5 File API(可能是Internet Explorer上的ActiveX控件)来检查客户端上的文件大小,并将其作为HTTP POST请求的一部分发送?

我应该如何批量上传到s3,并通过最终callback从nodeJS webserver插入到MongoDB?

我有一个Web服务器,接受来自客户端的图像,处理它们,将它们上传到S3,批量插入到我的mongoDB,最后发送到客户端的JSON结果。 使用单个图像的工作如下: router.post("/upload", function(req, res){ var form = new multiparty.Form(); form.parse(req,function(err,fields,files){ s3.upload({ Key: filename, Bucket: bucketname, ACL: "public-read", Body: fs.createReadStream(filepath) }, function(err, data){ if(err) //error handle Model.collection.insert({"name": "name", "url" : data.Location}, function(err, result){ if(err) //error handle res.json({result: result}) }) }) }) }) 这工作得很好,因为我简单地上传文件数据到s3 – >完成后,插入s3的输出(url)到数据库 – >完成后,将mongo的结果作为jsonarray发送到客户端。 问题是 – 我的客户端HTML除了多个type=fileinput相同的name=images ,以便我可以在我的表单parsing器中访问它们作为images[i] 。 上述algorithm重复images.length次。 当我不得不等待所有的asynchronousS3上传 – […]

从AWS Lambda函数的S3中获取对象并发送到Api Gateway

我正在试图从一个桶中获取.jpg文件并将其发送回api网关。 我相信我有正确的设置,因为我看到东西被logging。 它从s3抓取文件,而gm是graphicsmagick库。 不知道我是否正确使用它。 在lambda函数中,我这样做(很多代码来自aws示例): async.waterfall([ function download(next) { console.log(srcKey); console.log(srcBucket); // Download the image from S3 into a buffer. s3.getObject({ Bucket: srcBucket, Key: srcKey }, next); }, function transform(response, next) { console.log(response); next(null, 'image/jpeg', gm(response.Body).quality(85)); }, function sendData(contentType, data, next){ console.log(contentType); console.log(data); imageBuffer = data.sourceBuffer; context.succeed(imageBuffer); } ] ); 响应头有内容长度:85948,这似乎不正确,因为原始文件只有36kb。 任何人都知道我在做什么错了?

如何使一个套接字stream? imagemagick后连接https响应S3

我一般都是节点和编程,而且我一直在努力… 我想采取一个https响应,调整与graphicsmagick它,并将其发送到我的亚马逊S3桶。 看来,https res是一个IncomingMessage对象(我找不到任何有关信息),而来自graphicsmagick的stdout是一个Socket。 奇怪的是,我可以使用pipe道,并发送这两个到本地path的writeStream,res和stdout创build一个不错的新的resize的图像。 而且我甚至可以将资源发送到S3(使用knox),它可以工作。 但标准输出不想去S3: – / 任何帮助,将不胜感激! https.get(JSON.parse(queryResponse).data.url,function(res){ var headers = { 'Content-Length': res.headers['content-length'] , 'Content-Type': res.headers['content-type'] } graphicsmagick(res) .resize('50','50') .stream(function (err, stdout, stderr) { req = S3Client.putStream(stdout,'new_resized.jpg', headers, function(err, res){ }) req.end() }) }) knox – 连接到S3 – https://github.com/LearnBoost/knox graphicsmagick – 用于image processing – https://github.com/aheckmann/gm

为什么我的S3上传无法正确上传?

我使用以下格式上传图像文件: var body = fs.createReadStream(tempPath).pipe(zlib.createGzip()); var s3obj = new AWS.S3({params: {Bucket: myBucket, Key: myKey}}); var params = { Body: body, ACL: 'public-read', ContentType: 'image/png' }; s3obj.upload(params, function(err, data) { if (err) console.log("An error occurred with S3 fig upload: ", err); console.log("Uploaded the image file at: ", data.Location); }); 该图像成功上传到我的S3存储桶(没有错误消息,我在S3控制台中看到它),但是当我尝试在我的网站上显示它时,它会返回一个损坏的img图标。 当我使用S3控制台文件下载器下载图像时,我无法打开文件“损坏或损坏”的错误。 如果我使用S3控制台手动上传文件,我可以正确地在我的网站上显示它,所以我很确定我的上传有什么问题。 出了什么问题?

AWS Transfer Acceleration使用JavaScript SDK的预签名URL

简单地说,是否可以使用传输加速(TA)和使用AWS-SDK for JavaScript生成的预签名URL? 打开特定S3存储区的TA会给出格式为: {bucket}.s3-accelerate.amazonaws.com的URL。 但是,当为请求指定参数时,唯一有效的选项似乎是{Bucket: 'bucket', Key: 'key', Body: 'body', Expires: 60} ,似乎并不允许我说我想用TA。 生成的URL采用通常的格式{bucket}.s3-{region}.amazonaws.com ,这对TA来说是错误的。 该文档似乎没有提供关于预先签名的URL的很多信息。

显示从amazon s3与nodejs,expressjs和knox的图像

我认为这应该是一个直截了当的事情,但我不能find一个解决scheme 我试图找出在网站上显示存储在亚马逊S3上的图像的最佳方式。 目前我试图让这个工作(不成功) //app.js app.get('/test', function (req, res) { var file = fs.createWriteStream('slash-s3.jpg'); client.getFile('guitarists/cAtiPkr.jpg', function(err, res) { res.on('data', function(data) { file.write(data); }); res.on('end', function(chunk) { file.end(); }); }); }); //index.html <img src="/test" /> 是不是有可能直接从亚马逊显示图像? 我的意思是,减轻我的服务器上的负载的解决scheme将是最好的。

预签名的S3 URL签名不匹配

标题说明了一切。 这是我的代码; 我使用节点强大的文件。 form.on("end",function(field, file){ params.Body = fs.createReadStream(params.filePath) delete params.filePath; S3.getSignedUrl('putObject',params, function(err, url) { if(err){console.log(err);} console.log(url); }); }) 成功上传后,urlvariables返回s3 url,如下所示; https://bucket-name.s3.amazonaws.com/746575308_8c081369df.jpg?AWSAccessKeyId=[key]&Expires=[date]&Signature=[signature]&x-amz-acl=public-read 但仍然得到SignatureDoesNotMatch错误。 在描述中说 我们计算的请求签名与您提供的签名不符。 检查您的密钥和签名方法。 这是我的参数 params = { Bucket:"bucketname", Key: file.name, ACL: 'public-read' } 我错过了什么?

aws s3 putObject vs sync

我需要上传一个大文件到aws s3桶。 在每10分钟我的代码从源目录中删除旧文件,并生成一个新的文件。 文件大小约500 MB。 现在我使用s3.putObject()方法创build后上传每个文件。 我也听说过aws s3同步。 它与aws-cli一起来。 它用于上传文件到S3桶。 我用sws上传node.js的aws-sdk。 aws-sdk for node.js不包含s3-sync方法。 是s3-sync比s3.putObject()方法好吗? 我需要更快的上传。

httpUploadProgress的缓冲区数据没有按预期工作?

我是新的节点js /快递。我正在尝试使用cloudfront和s3桶来制作多个图像上传应用程序。我想为用户显示进度条,我正在使用套接字io。照片上传进度将在loop.but问题是,当照片上传开始时,总是显示100%完成不从一开始。不认为上传完成它不是,我的文件是20MB。我不知道什么事情我想念什么东西 这是我的代码 app.post('/posttodb',(req,res) => { let isLoggedIn = req.cookies['check']; let token = req.cookies['peace']; const bucketName = 'awsBucketName'; console.log(isLoggedIn); if(isLoggedIn == "true"){ if(token){ jwt.verify(token,JWTPASS,(err,decode) => { if(err){ console.log(err) res.json({error:true}) }else{ console.log('========================>',decode) let postOwneranme = decode.user.username; let postTags = req.body.data.postTags; let photosBlob = req.body.data.photos; let postId = req.body.data.postId; let nepostAwsPhots = []; let OwnerPic = decode.user.propic; […]