在一个Node.js项目中,我试图从S3取回数据。
当我使用时getSignedURL
,一切正常:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
我的参数是:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
如果将URL输出带到控制台并将其粘贴到Web浏览器中,它将下载所需的文件。
但是,如果我尝试使用,则会出现getObject
各种奇怪的行为。我相信我只是使用不正确。这是我尝试过的:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
输出:
{
AcceptRanges: 'bytes',
LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT',
ContentLength: '1602862',
ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"',
ContentType: 'application/octet-stream',
Metadata: {},
Body: <Buffer 01 00 00 00 ... > }
null
因此看来这工作正常。但是,当我在console.log
s
之一上设置断点时,我的IDE(NetBeans)会引发错误并拒绝显示数据值。尽管这可能只是IDE,但我还是决定尝试其他使用方式getObject
。
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
这不会输出任何内容。放置一个断点表明代码永远不会到达console.log
s中的任何一个。我也尝试过:
aws.getObject(params).on('success', function(data){
console.log(data);
});
但是,这也不会输出任何内容,放置一个断点表明console.log
永远不会到达。
我究竟做错了什么?
当执行getObject()
从S3
API,按照文档文件的内容都位于Body
属性,您可以从您的样品输出看到。您应该具有类似于以下内容的代码
const aws = require('aws-sdk');
const s3 = new aws.S3(); // Pass in opts to S3 if necessary
var getParams = {
Bucket: 'abc', // your bucket name,
Key: 'abc.txt' // path to the object you're looking for
}
s3.getObject(getParams, function(err, data) {
// Handle any error and exit
if (err)
return err;
// No error happened
// Convert Body from a Buffer to a String
let objectData = data.Body.toString('utf-8'); // Use the encoding necessary
});
您可能不需要从data.Body
对象创建新的缓冲区,但是如果需要,可以使用上面的示例来实现。
问题内容: 我想知道如何使用XMLHttpRequest加载远程URL的内容,并将所访问站点的HTML存储在JS变量中。 说,如果我想加载并Alert()的HTML,我该怎么做? 问题答案: 您可以在等于时得到它。 这是一个示例(与IE6 / 7不兼容)。 为了获得更好的跨浏览器兼容性,不仅可以与IE6/7兼容,而且还可以解决某些浏览器特定的内存泄漏或错误,并且为了降低触发Ajaxical请求的冗
我试图从Web读取JSON数据,但该代码返回空结果。我不确定我做错了什么。
如果我尝试实现一个自定义转换器(我在网上找到了一些例子),它会抱怨我没有实现抽象方法convert(F),而这些例子都没有实现。 谢了。
问题内容: 我正在尝试为我公司正在开发的API编写包装器。这很安静,使用邮递员,我可以向用户端发送一个邮寄请求,例如使用用户名和密码作为POST数据,并且还给我一个令牌。所有工作均按预期进行。现在,当我尝试从PHP中进行操作时,我得到了一个对象,但似乎无法像在Postman请求中那样在其内部的任何地方找到令牌。 相关代码如下: 上面代码的输出看起来像(警告,文本输入墙): Postman的输出如下
我正在使用Spring框架中的RestTemplate在Java中创建一个REST客户机。 一切都很好,直到我不得不用postForLocation发帖子。 我正在访问的Web服务返回一个json,其中包含关于POST操作的信息。 在PHP中这很好,但我真的不明白如何在Java中使用RestTemplate。 这将返回NULL。 使用相同的代码,但使用getForObject(当然,将URL更改为
问题内容: 如何在Node.js中获得最准确的时间戳? ps我的Node.js版本是0.8.X,而node-microtime扩展名对我不起作用(安装时崩溃) 问题答案: ?这给您一个以毫秒为单位的时间戳,这是JS给您的最准确的时间戳。 更新:正如vaughan所述,它可以在Node.js中使用- 它的分辨率为纳秒,因此它的分辨率更高,这并不意味着它必须更精确。 PS .:为了更清楚一点,返回一个