.net core 阿里云接口之将指定的OSS文件下载到流

紧接上文,.net core 阿里云接口之获取临时访问凭证_SunshineGGB的博客-CSDN博客

本文继续阿里云接口调用,将指定的OSS文件下载到流。

直接上代码:

/// <summary>
/// 将指定的OSS文件下载到流
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
[HttpPost, HttpGet, HttpOptions, CorsOptions]
public IActionResult DownloadSpecifiedOSSFileToStream(string fileName)
{
    if(string.IsNullOrWhiteSpace(fileName))
    {
        return ErrorResult("未获取到将要下载的文件名称!", 111101);
    }
    string accessKey = _configuration["Aliyun:CcementOss:AccessKey:Id"];
    string secretKey = _configuration["Aliyun:CcementOss:AccessKey:Secret"];
    string bucketName = _configuration["Aliyun:CcementOss:BucketName"];
    string endpoint = _configuration["Aliyun:CcementOss:Endpoint"];
    // 服务器将要存储文件的路径
    string downloadFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DownLoadFile/");
    if(Directory.Exists(downloadFilename) == false) // 如果不存在就创建file文件夹
    {
        Directory.CreateDirectory(downloadFilename);
    }
    if(!string.IsNullOrWhiteSpace(accessKey) && !string.IsNullOrWhiteSpace(secretKey) && !string.IsNullOrWhiteSpace(bucketName) && !string.IsNullOrWhiteSpace(endpoint))
    {
        // 创建OssClient实例
        var client = new OssClient(endpoint, accessKey, secretKey);
        try
        {
            // 下载文件到流。OssObject 包含了文件的各种信息,如文件所在的存储空间、文件名、元信息以及一个输入流。
            var obj = client.GetObject(bucketName, fileName);
            using(var requestStream = obj.Content)
            {
                byte[] buf = new byte[1024];
                var fs = System.IO.File.Open(downloadFilename + fileName, FileMode.OpenOrCreate);
                var len = 0;
                // 通过输入流将文件的内容读取到文件或者内存中。
                while((len = requestStream.Read(buf, 0, 1024)) != 0)
                {
                    fs.Write(buf, 0, len);
                }
                fs.Close();
                return SuccessResult(fs);
            }
        }
        catch(Exception ex)
        {
            LogHelper.WriteErrorLog("下载文件出现异常,异常原因为:" + ex.Message);
            return ErrorResult("下载文件出现异常,异常原因为:" + ex.Message, 111150);
        }
    }
    else return ErrorResult("阿里云配置文件读取失败,请联系网站管理员!", 111102);
}

以上就是.net core 阿里云接口之将指定的OSS文件下载到流的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

posted @ 2021-12-24 10:27  GoodTimeGGB  阅读(25)  评论(0编辑  收藏  举报