我想知道是否有一些功能可用于指定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的文件
答案 0 :(得分:0)
感谢您举报此事,对于给您带来的不便,我们深表歉意。我们已确认这是Azure存储客户端库中的错误。