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



我想知道是否有一些功能可以指定azure blob流的最大长度,这样只有指定的大小才能上传,其余的都会被丢弃,即文件会被截断。

问题

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

我有以下代码在工作(我使用表单的多方和azure的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被指定为低于29Mb(在示例中为25Mb),则当我上传例如80Mb的视频时,我得到期望的结果,即只有25Mb的文件被上传,即视频文件被截断。

但如果我指定大小大于29Mb,那么streamLength就无关紧要了,整个文件都在上传中。

我试着查看azure-storage,发现如果streamLength被指定得比DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES: 32* 1024 * 1024多,那么库会尝试通过将blob分隔成块来将其放入块中,如果它低于DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES,那么它会尝试同时放入整个块。

是否有实现此功能的方法

编辑

测试上传80 Mb文件

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

streamLength=32Mb(>=32Mb):80 Mb的文件上传

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

相关内容

  • 没有找到相关文章

最新更新