相关疑难解决方法(0)

ArrayBuffer到base64编码的字符串

我需要一种有效的(读取本机)方式将ArrayBuffer转换为需要在多部分帖子上使用的base64字符串.

javascript base64 encoding arraybuffer

168
推荐指数
11
解决办法
16万
查看次数

如何从Node.js中的S3 getObject获得响应?

在Node.js项目中,我试图从S3获取数据.

当我使用时getSignedURL,一切正常:

aws.getSignedUrl('getObject', params, function(err, url){
    console.log(url); 
}); 
Run Code Online (Sandbox Code Playgroud)

我的参数是:

var params = {
              Bucket: "test-aws-imagery", 
              Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
Run Code Online (Sandbox Code Playgroud)

如果我将URL输出带到控制台并将其粘贴到Web浏览器中,它会下载我需要的文件.

但是,如果我尝试使用,getObject我会得到各种奇怪的行为.我相信我只是错误地使用它.这就是我尝试过的:

aws.getObject(params, function(err, data){
    console.log(data); 
    console.log(err); 
}); 
Run Code Online (Sandbox Code Playgroud)

输出:

{ 
  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
Run Code Online (Sandbox Code Playgroud)

所以它似乎正常运作.但是,当我在其中一个console.logs 上放置断点时,我的IDE(NetBeans)会抛出错误并拒绝显示数据的值.虽然这可能只是IDE,但我决定尝试其他方式使用getObject.

aws.getObject(params).on('httpData', function(chunk){
    console.log(chunk); 
}).on('httpDone', function(data){
    console.log(data); 
});
Run Code Online (Sandbox Code Playgroud)

这不输出任何东西.在断点处显示代码永远不会到达任何一个console.logs.我也尝试过:

aws.getObject(params).on('success', function(data){
    console.log(data); 
});
Run Code Online (Sandbox Code Playgroud)

但是,这也没有输出任何东西,并且放置一个断点表明console.log …

javascript amazon-s3 node.js aws-sdk aws-sdk-nodejs

58
推荐指数
8
解决办法
9万
查看次数

从Array(保持整数)创建ArrayBuffer并再次返回

它似乎很简单,但我无法找到如何将一个Array填充整数转换为一个ArrayBuffer并重新转换为一个整数Array.有很多的例子,其中字符串转换为ArrayBuffer例如像在这里.
使用这些例子我创建了这个:

/**
 * Convert string to array buffer.
 *
 * @param {Array.<int>} array
 * @returns {ArrayBuffer}
 */
self.arrayToArrayBuffer = function( array ) {
    var length = array.length;
    var buffer = new ArrayBuffer( length * 2 );
    var view = new Uint16Array(buffer);
    for ( var i = 0; i < length; i++) {
        view[i] = array[i];
    }
    return buffer;
}
Run Code Online (Sandbox Code Playgroud)

然后阵列也需要再次转换回来.为此,我使用:

var array = new Uint16Array(arrayBuffer);
Run Code Online (Sandbox Code Playgroud)

这个解决方案似乎有效,但有没有更简单的方法呢?

UPDATE

它也适用于如下数组:

var …
Run Code Online (Sandbox Code Playgroud)

javascript arrays arraybuffer

12
推荐指数
1
解决办法
2万
查看次数