开发者社区 问答 正文

对象存储 OSS简单的下载文件

已解决

展开
收起
2018-01-20 13:34:29 1418 分享 版权
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    我们可以通过以下代码将文件读取到一个流中:

    1. // 初始化OssClient
    2. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
    3. /// <summary>
    4. /// 从指定的OSS存储空间中获取指定的文件
    5. /// </summary>
    6. /// <param name="bucketName">要获取的文件所在的存储空间的名称</param>
    7. /// <param name="key">要获取的文件的名称</param>
    8. /// <param name="fileToDownload">文件保存的本地路径</param>
    9. public void GetObject(string bucketName, string key, string fileToDownload)
    10. {
    11. try
    12. {
    13. var object = client.GetObject(bucketName, key);
    14. using (var requestStream = object.Content)
    15. {
    16. byte[] buf = new byte[1024];
    17. var fs = File.Open(fileToDownload, FileMode.OpenOrCreate);
    18. var len = 0;
    19. while ((len = requestStream.Read(buf, 0, 1024)) != 0)
    20. {
    21. fs.Write(buf, 0, len);
    22. }
    23. fs.Close();
    24. }
    25. Console.WriteLine("Get object succeeded");
    26. }
    27. catch (Exception ex)
    28. {
    29. Console.WriteLine("Get object failed. {0}", ex.Message);
    30. }
    31. }

    提示:

    • 完整代码参考:GitHub
    • OssObject 包含了文件的各种信息,包含文件所在的存储空间(Bucket)、文件的名称、Metadata以及一个输入流。
    • 我们可以通过操作输入流将文件的内容读取到文件或者内存中。而ObjectMeta包含了文件上传时定义的,ETag,Http Header以及自定义的元信息。
    2018-01-22 05:22:03
    赞同 展开评论