我们创建了许多csv文件并将它们存储在azure blob容器中。创建所有文件后,应将它们下载到vpn中的某个位置。这在大多数情况下都可以正常工作,但有些文件比预期的要小得多。
文件的平均大小约为40 mb,有时文件大小介于7到30 mb之间。这是到目前为止的代码:
private void DownloadBlobToFile(ICloudBlob blob, string fileName)
{
_log.Debug("DownloadBlobToFile");
Contract.Requires<ArgumentNullException>(blob == null, "blob must not be null.");
Contract.Requires<ArgumentNullException>(string.IsNullOrWhiteSpace(fileName), "fileName must not be null or empty.");
using (var fileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read))
{
blob.DownloadToStream(fileStream, null, GetBlobRequestOptions());
_log.Info(string.Format("File {0} successfully downloaded.", fileStream.Name));
}
}
private BlobRequestOptions GetBlobRequestOptions()
{
if (_blobRequestOptions != null)
{
return _blobRequestOptions;
}
_blobRequestOptions = new BlobRequestOptions
{
ServerTimeout = TimeSpan.FromSeconds(60),
MaximumExecutionTime = TimeSpan.FromSeconds(180),
RetryPolicy = new ExponentialRetry(TimeSpan.FromSeconds(3), 5)
};
return _blobRequestOptions;
}
如果文件未完全下载,则根本没有错误消息。 检查文件是否已成功完成下载的最佳步骤是什么?
答案 0 :(得分:0)
不确定您是否可以控制文件的名称,但如果您这样做,则可以使用文件内容的MD5哈希命名该文件。然后,您可以在文件下载时计算该MD5哈希,以确保它与文件名匹配。这样你就会知道你是否拥有所有内容。您还可以将此元数据存储在其他位置并将其关联,但关键是使用MD5哈希验证您拥有预期的所有内容。