我们创建了大量的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;
}当文件下载不完整时,根本不会出现错误消息。检查文件是否已成功且完全下载的最佳步骤是什么?
发布于 2015-06-23 00:50:39
不确定您是否可以控制文件的名称,但如果可以,您可以使用文件内容的MD5散列来命名文件。然后,您可以在文件下载时计算该MD5散列,以确保它与文件名匹配。这样你就可以知道你是否拥有所有的内容。您也可以将这些元数据存储在其他地方并与之关联,但关键是使用MD5散列来验证您是否拥有所需的所有内容。
https://stackoverflow.com/questions/30985452
复制相似问题