[.NET]阿里雲OSS上傳下載與生成圖片鏈接


項目中需要添加以下依賴項,在控制台中執行安裝依賴項:

Install-Package Aliyun.OSS.SDK --適用於.NET版本
Install-Package Aliyun.OSS.SDK.NetCore --適用.NET Core版本

以下是封裝的上傳下載以及生成圖片鏈接的方法:

/// <summary>
/// 上傳文件
/// </summary>
/// <param name="accessKeyId">開發者秘鑰對,通過阿里雲控制台的秘鑰管理頁面創建與管理</param>
/// <param name="accessKeySecret">開發者秘鑰對,通過阿里雲控制台的秘鑰管理頁面創建與管理</param>
/// <param name="endpoint">Endpoint,創建Bucket時對應的Endpoint</param>
/// <param name="bucketName">Bucket名稱,創建Bucket時對應的Bucket名稱</param>
/// <param name="key">文件標識</param>
/// <param name="file">需要上傳文件的文件路徑</param>
public static void PutObject(string accessKeyId, string accessKeySecret, string endpoint, string bucketName, string key, string file)
{
    var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
    try
    {
        client.PutObject(bucketName, key, file);
    }
    catch (OssException ex)
    {
        LogHelper.LogException<OssException>(
            $"Msg:{ex.Message};Code:{ex.ErrorCode};RequestID:{ex.RequestId};HostID:{ex.HostId}");
    }
}

/// <summary>
/// 下載文件
/// </summary>
/// <param name="accessKeyId">開發者秘鑰對,通過阿里雲控制台的秘鑰管理頁面創建與管理</param>
/// <param name="accessKeySecret">開發者秘鑰對,通過阿里雲控制台的秘鑰管理頁面創建與管理</param>
/// <param name="endpoint">Endpoint,創建Bucket時對應的Endpoint</param>
/// <param name="bucketName">Bucket名稱,創建Bucket時對應的Bucket名稱</param>
/// <param name="key">文件標識</param>
/// <param name="file">下載存放的文件路徑</param>
public static void GetObject(string accessKeyId, string accessKeySecret, string endpoint, string bucketName, string key, string file)
{
    var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
    try
    {
        var result = client.GetObject(bucketName, key);
        using (var requestStream = result.Content)
        {
            using (var fs = File.Open(file, FileMode.OpenOrCreate))
            {
                int length = 4 * 1024;
                var buf = new byte[length];
                do
                {
                    length = requestStream.Read(buf, 0, length);
                    fs.Write(buf, 0, length);
                } while (length != 0);
            }
        }
    }
    catch (OssException ex)
    {
        LogHelper.LogException<OssException>(
            $"Msg:{ex.Message};Code:{ex.ErrorCode};RequestID:{ex.RequestId};HostID:{ex.HostId}");
    }
}

/// <summary>
/// 獲取圖片地址
/// </summary>
/// <param name="accessKeyId">開發者秘鑰對,通過阿里雲控制台的秘鑰管理頁面創建與管理</param>
/// <param name="accessKeySecret">開發者秘鑰對,通過阿里雲控制台的秘鑰管理頁面創建與管理</param>
/// <param name="endpoint">Endpoint,創建Bucket時對應的Endpoint</param>
/// <param name="bucketName">Bucket名稱,創建Bucket時對應的Bucket名稱</param>
/// <param name="key">文件標識</param>
/// <param name="width">設置圖片的寬度</param>
/// <param name="height">設置圖片的高度</param>
/// <returns></returns>
public static string GetIamgeUri(string accessKeyId, string accessKeySecret, string endpoint, string bucketName, string key, float width = 100, float height = 100)
{
    var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
    try
    {
        var process = $"image/resize,m_fixed,w_{width},h_{height}";
        var req = new GeneratePresignedUriRequest(bucketName, key, SignHttpMethod.Get)
        {
            Expiration = DateTime.Now.AddHours(1),
            Process = process
        };
        var uri = client.GeneratePresignedUri(req);
        return uri.ToString();
    }
    catch (OssException ex)
    {
        LogHelper.LogException<OssException>(
            $"Msg:{ex.Message};Code:{ex.ErrorCode};RequestID:{ex.RequestId};HostID:{ex.HostId}");
    }
}

調用方法:

var accessKeyId = "";
var accessKeySecret = "";
var endpoint = "oss-cn-shenzhen.aliyuncs.com";
var bucketName = "service-img";

// 上傳文件
OssApi.PutObject(accessKeyId, accessKeySecret, endpoint, bucketName, "2019012215062801", "C:/Users/as/Desktop/2019012215062801.png");

// 下載文件
OssApi.GetObject(accessKeyId, accessKeySecret, endpoint, bucketName, "2019012215062801", "C:/Users/as/Desktop/down.png");

// 獲取圖片鏈接地址
OssApi.GetIamgeUri(accessKeyId, accessKeySecret, endpoint, bucketName, "2019012215062801", 100, 100);

原文地址:https://www.jianshu.com/p/dbe6da54ade4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM