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

我想知道是否有一些function可用来指定azure blobstream的最大长度,以便只有指定的大小上传和rest被丢弃,即文件被截断。

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

我有以下代码工作(我正在使用多方的forms和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被指定低于29 Mb(例如25 Mb),那么当我上传80 Mb的video时,我会得到所需的结果,即只有25 Mb的文件被上传,即video文件被截断。

但是,如果我指定大小大于29 Mb那么streamLength并不重要,整个文件正在上传。

我试着看着azure-storage ,发现如果streamLength被指定超过DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES: 32* 1024 * 1024那么库试图把块分成块,如果它低于DEFAULT_SINGLE_BLOB_PUT_THRESHOLD_IN_BYTES那么它试图把整个立即封锁。

有没有办法实现这个function?

编辑

testing上传80 Mb的文件

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

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

感谢您报告此事,我们对此造成的不便深表歉意。 我们已确认这是Azure存储客户端库中的一个错误。