小工具知识网

当前位置: 首页 > 行业知识 > 【.Net 使用阿里云OSS 存储文件】

行业知识

【.Net 使用阿里云OSS 存储文件】

2026-10-31 17:53:31 来源:互联网转载

一、使用NuGet安装【Aliyun.OSS.SDK】

���意:如果有多个项目,需要在具体使用的项目跟启动项目都安装同一版本的Aliyun.OSS.SDK

二、上传代码

using Aliyun.OSS;using System.IO;using System;using CadApplication.Service.Dto;using System.Net;using System.Net.Sockets;namespace CadApplication.Util{    public class OSSUtil    {        string accessKeyId = "*******"; // 设置自己的 Access Key ID        string accessKeySecret = "*******"; // 设置自己的 Access Key Secret        string endpoint = "*******aliyuncs.com"; // 设置自己的 Endpoint        string bucketName = "*******"; // 设置自己的 Bucket Name   annengcadapitest        ///         /// 测试OSS.        ///         public CommonResult TestOSS()        {            // 整体逻辑:上传服务器本地文件到阿里云OSS,然后上传成功后再获取OSS文件的存放路径            CommonResult result = new CommonResult();            // 创建 OssClient 对象            var ossClient = new OssClient("*******.aliyuncs.com", "*******", "*******");            // 获取本地文件路径            string localFilePath = @"C:\Users\*******\Desktop\MonthQuery.txt"; // 设置本地文件路径            // 指定上传到 OSS 的目标文件名称            string fileName = Path.GetFileName(localFilePath);            // OSS的路径 规律 年/月/日   例如:2024/1/20240101            string filePath = DateTime.Now.Year.ToString() + "/" + DateTime.Now.Month.ToString() + "/" + DateTime.Now.ToString("yyyy-MM-dd");            string objectName = filePath +"/"+ fileName;            try            {                using (var fs = File.OpenRead(localFilePath))                {                    // 调用 PutObjectAsync 方法进行文件上传                    var  putResult= ossClient.PutObject(bucketName, objectName, fs);                    // 说明文件上传成功,然后读取到文件的存放地址,进行返回                    if (putResult.HttpStatusCode == HttpStatusCode.OK)                    {                        GeneratePresignedUriRequest generatePresignedUriRequest = new GeneratePresignedUriRequest(bucketName, objectName);                        var uriResult = ossClient.GeneratePresignedUri(generatePresignedUriRequest);                        string localHostIp = string.Empty;                        IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());                        foreach (IPAddress ip in host.AddressList)                        {                            if (ip.AddressFamily == AddressFamily.InterNetwork)                            {                                localHostIp = ip.ToString();                            }                        }                        // 然后返回数据的url                        OSSFileInforDto oSSFileInforDto = new OSSFileInforDto();                        oSSFileInforDto.FileLocalPath = localFilePath;                        oSSFileInforDto.FileName = fileName;                        oSSFileInforDto.LocalHostIP = localHostIp;                        oSSFileInforDto.OSSFileUrl = uriResult.Host  + uriResult.AbsolutePath;                        result.Data = oSSFileInforDto;                        result.Success = true;                        result.Message = "上传文件到OSS成功";                    }                    else                    {                         result.Success = false;                        result.Message = $"上传文件到OSS失败";                    }                   // var  selectResult = ossClient.GeneratePresignedUri(bucketName,);                }            }            catch (Exception ex)            {                result.Success = false;                result.Message = $"上传文件到OSS失败{ex.Message}";            }            finally            {                // 释放资源                 // ossClient.shutdown;            }            return result;        }    }}

三、 遇到问题

3.1 Object reference not set to an instance of an object.

引起这个问题由两个原因:1. 启动项目里面没有安装【Aliyun.OSS.SDK】。2.启动项目里面的【Aliyun.OSS.SDK】跟实际执行代码的项目里面的【Aliyun.OSS.SDK】版本不一致。

3.2 Aliyun.OSS.Common.OssException:The specified bucket does not exist.

没有在OSS上创建Bucket(桶),使用阿里云官方工具OSS Browser 创建,也可以使用代码创建。具体可以参考阿里云官方文档:https://help.aliyun.com/zh/oss/getting-started/sdk-quick-start?spm=a2c4g.11186623.0.0.1db27586JIsQcM

上一篇:完美怎么选择服务器配置?

下一篇:怎么租服务器放网页?