如果要下载的文件太大,或者一次性下载耗时太长,您可以通过流式下载,一次处理部分内容,直到完成文件的下载。
流式下载的完整代码请参见GitHub。
以下代码用于把指定的OSS文件下载到流:
using Aliyun.OSS; var endpoint = "<yourEndpoint>"; var accessKeyId = "<yourAccessKeyId>"; var accessKeySecret = "<yourAccessKeySecret>"; var bucketName = "<yourBucketName>"; // objectName 表示您在下载文件时需要指定的文件名称,如abc/efg/123.jpg。 var objectName = "<yourObjectName>"; var downloadFilename = "<yourDownloadFilename>"; // 创建OssClient实例。 var client = new OssClient(endpoint, accessKeyId, accessKeySecret); try { // 下载文件到流。OssObject 包含了文件的各种信息,如文件所在的存储空间、文件名、元信息以及一个输入流。 var obj = client.GetObject(bucketName, objectName); using (var requestStream = obj.Content) { byte[] buf = new byte[1024]; var fs = File.Open(downloadFilename, FileMode.OpenOrCreate); var len = 0; // 通过输入流将文件的内容读取到文件或者内存中。 while ((len = requestStream.Read(buf, 0, 1024)) != 0) { fs.Write(buf, 0, len); } fs.Close(); } Console.WriteLine("Get object succeeded"); } catch (Exception ex) { Console.WriteLine("Get object failed. {0}", ex.Message); }