【问题标题】:azure's createBlockBlobFromLocalFile doesn't create blob on storage container天蓝色的 createBlockBlobFromLocalFile 不会在存储容器上创建 blob
【发布时间】:2014-09-30 21:00:05
【问题描述】:

我正在为我的站点在 blob 存储上递归上传内容文件夹。 整个程序非常简单:

1 - 如果存在则丢弃容器(运行良好)

2 - 创建容器(运行正常,但必须说明这是一个迭代过程,需要很少尝试)

3 - 递归运行文件夹并将文件作为 blob 上传到存储(部分正常)

第三步运行速度极快,但既不会出现内部错误,也不会调用我的回调

这是 Blob 上传的代码

upload: function( container, blobname, file ){
    var p = new Promise();
    this.service.createBlockBlobFromLocalFile( container, blobname, file, function( error ){
        if( error ){
            throw error;
        }
        console.log( "Uploaded file '"+ file +"' to container in '" + blobname + "'" );
        p.resolve();
    } );
    return p;
}

我必须提到,像 createBlockBlobFromStream 和其他方法都没有同样有效。我肯定做错了,但我看不出是什么。

【问题讨论】:

  • 函数是返回还是挂起?当你说回调没有被调用时,你是指发布的回调,控制台日志行还是承诺中的回调?最后,您是否尝试过在没有 Promise 的情况下使用 createBlockBlobFromLocalFile(或其他方法,如 createBlockBlobFromStream),而是使用标准异步回调模式?
  • 1 - 函数是返回还是直接挂起 - 它返回速度摘要 2 - 没有调用回调 - createBlockBlobFromLocalFile 的回调是未调用,包含日志记录的语句。 3 - try without Promise - 还没有尝试,但我尝试在不递归访问文件夹的情况下上传文件。它成功了。至于承诺 - 我不确定它是否会与 azure 库代码混淆,因为它是独立模块

标签: node.js azure azure-blob-storage


【解决方案1】:

终于找到了我的错误,艾米丽你是对的。有承诺的游戏并不顺利。

我忘记从文件夹处理方法返回承诺,因此在天蓝色响应之前很久就完成了整体任务。

blobsService.cleanContainer( container ).
             then( blobsService.createContainer.bind( blobsService ) ).
             then( function(){
                   var folders = data.rootFolder.split( path.sep );
                   !!!return!!! blobsService.processFolder( container, data.rootFolder, folders[ folders.length - 1 ] );
             }).
             then( resolver );    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 2015-12-04
    • 2011-10-10
    • 2015-09-09
    • 2018-09-19
    • 1970-01-01
    • 2017-05-30
    • 2019-08-11
    相关资源
    最近更新 更多