定义Azure blob流的大小限制,即截断文件

时间:2015-04-24 07:49:20

标签: node.js azure stream azure-storage-blobs

我想知道是否有一些功能可用于指定azure blob流的最大长度,以便只上传指定的大小并停止休息,即文件被截断。

问题

我需要指定文件的最大大小,例如50或60 Mb,如果大小最大,我希望文件被截断。 (文件可以是大型日志文件或视频文件)

我有以下代码工作(我使用multiparty for form和azure-storage node package for azure)

// form.on is from multiparty

form.on('part', function(part) {
     var streamLength = 25 * 1024 * 1024; // part.byteCount
     if (part.filename) {
        form.on('part', function(part) {
             if (part.filename) {
                blobService.createBlockBlobFromStream(container,
                        blobName, part, streamLength, 
                        function(err, blobContent, blob) {
                     if (err) {
                        // do sth with error
                     }
                     return blobContent;
                 });
             } else {
                    form.handlePart(part);
             }
        });
     } else {
        form.handlePart(part);
     }
});

情境:

如果指定streamLength低于29 Mb(例如25 Mb),那么当我上传80 Mb的视频时,我会得到所需的结果,即只有25 Mb的文件上传即视频文件获取截断。

但如果我指定的大小大于29 Mb,则streamLength无关紧要,整个文件正在上传。

我尝试查看azure-storage并发现如果指定的streamLength超过DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES: 32* 1024 * 1024,那么库会尝试将blob分成块,如果它们位于DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES之内{1}}然后它会尝试立即放置整个块。

有没有办法实现此功能?

修改

测试上传80 Mb的文件

  

streamLength = 28 Mb(<29 Mb):上传了28 Mb的文件

     

streamLength = 32 Mb(&gt; = 32 Mb):上传80 Mb的文件

1 个答案:

答案 0 :(得分:0)

感谢您举报此事,对于给您带来的不便,我们深表歉意。我们已确认这是Azure存储客户端库中的错误。