Cant 使用 awssum 和 nodejs 将映像保存到 Amazon S3
Cant's save image with awssum and nodejs to amazon S3
我的节点js代码从我的服务器tmp.png打开一个本地png文件,然后尝试将其保存在Amazon S3中。我一直遇到问题,我怀疑这与编码有关。它工作的唯一方法是使用 base64 编码(我不希望我的照片使用)。
fs = require('fs');
var awssum = require('awssum');
var amazon = awssum.load('amazon/amazon');
var s3Service = awssum.load('amazon/s3');
var s3 = new s3Service('mykey', 'mysecret', 'account', amazon.US_WEST_1);
fs.readFile('./tmp.png', function (err, data){
if(err){
console.log("There was an error opening the file");
} else {
s3.PutObject({
BucketName : 'my-bucket',
ObjectName : 'tmp.png',
ContentType : 'image/png',
ContentLength : data.length,
Body : data,
}, function(err, data) {
if(err){
console.log("There was an error writing the data to S3:");
console.log(err);
} else {
console.log("Your data has been written to S3:");
console.log(data);
}
});
}
});
显然,我的存储桶实际上是我唯一的存储桶名称。我从亚马逊收到的消息是请求超时:
在超时期限内未读取或写入与服务器的套接字连接。空闲连接将关闭。
看起来在
文档中找到了一个示例,可以完成我需要它的功能。关键是使用 fs.stat 作为文件大小,并使用 fs.createReadStream 读取文件:
// you must run fs.stat to get the file size for the content-length header (s3 requires this)
fs.stat(path, function(err, file_info) {
if (err) {
inspect(err, 'Error reading file');
return;
}
var bodyStream = fs.createReadStream( path );
console.log(file_info.size);
var options = {
BucketName : 'my-bucket',
ObjectName : 'test.png',
ContentType : 'image/png',
ContentLength : file_info.size,
Body : bodyStream
};
s3.PutObject(options, function(err, data) {
console.log("'nputting an object to my-bucket - expecting success");
inspect(err, 'Error');
inspect(data, 'Data');
});
});
相关文章:
- Amazon S3 REST API大小不正确
- 如何将getJson的响应保存在全局变量中
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何将多个画布保存为一个图像
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 保存数组javascript
- 保存串行端口列表与流星
- 将JavaScript变量保存到Rails模型
- Java脚本将URL转换为已保存的URL时出错
- 如何自动保存动态生成的HTML SVG元素
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 将JQuery Handontable保存到服务器上的excel文件中
- NodeJS expressJS使用multer和passport将文件上传并保存到MongoDB
- Cant 使用 awssum 和 nodejs 将映像保存到 Amazon S3
- Node.js -将画布保存为图像[用于使用Amazon S3的Heroku托管应用程序]