定义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存储客户端库中的一个错误。