我想知道是否有一些功能可用于指定 azure blob 流的最大长度,以便仅上传指定的大小并丢弃其余部分,即文件被截断。
问题
我的需要是指定文件的最大大小,例如 50 或 60 Mb,并且我希望文件在大小达到最大值时被截断。 (文件可以是大型日志文件或视频文件)
我有以下代码正在运行(我使用 multiparty 作为表单,使用 azure-storage Node 包作为 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 分成 block 来将它们分成 block ,如果它低于 DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES
,那么它会尝试一次放入整个 block 。
有办法实现这个功能吗?
编辑
测试上传 80 Mb 文件
streamLength = 28 Mb (< 29 Mb) : 28 Mb of file gets uploaded
streamLength = 32 Mb (>= 32 Mb): 80 Mb of file gets uploaded
最佳答案
感谢您报告此事,对于给您带来的不便,我们深表歉意。我们已确认这是 Azure 存储客户端库中的错误。
关于node.js - 定义 Azure blob 流的大小限制,即截断文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29841688/