C#实现七牛云存储

云存储,就是把本地的资源文件存放至网络上,可以公网访问。相当于网盘功能,感觉非常方便。

这里介绍的是七牛云存储。有兴趣的可以去官方网站详看

 

---------------------------------------------------------------------------------

博客搬家啦,新地址:

https://www.navisoft.com.cn

---------------------------------------------------------------------------------

 

根据官网的介绍,本身是提供SDK的,下载地址,大家可以根据自己开发的应用程序,下载对应的SDK包。我下载的是C#版本,参考对应的API文档,会发现最新SDK源码和API文档不一致。是的,文档还没有及时更新

因此,我在这里重新封装一层,直接调用即可。代码如下

 

先定义若干属性(注册七牛用户时,由系统发放)

1
2
3
4
public static string AccessKey = null;
public static string SecretKey = null;
public static string Bucket = null;
public static string UrlPrefix { get; set; }  

 

上传文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public static void UploadFile(string localFile, string saveKey)
{
    // 上传策略
    PutPolicy putPolicy = new PutPolicy();
 
    // 设置要上传的目标空间
    putPolicy.Scope = QiniuUtil.Bucket;
 
    // 上传策略的过期时间(单位:秒)
    putPolicy.SetExpires(3600);
 
    //// 文件上传完毕后,在多少天后自动被删除
    //putPolicy.DeleteAfterDays = 1;
 
    // 生成上传凭证
    //参考地址:https://segmentfault.com/q/1010000008205978
    string jsonParam = JsonHelper.GetJsonByObject(putPolicy);
    Mac mac = new Mac(QiniuUtil.AccessKey, QiniuUtil.SecretKey);
    string uploadToken = Auth.CreateUploadToken(mac, jsonParam);
 
    FormUploader upLoader = new FormUploader(false);
    HttpResult result = upLoader.UploadFile(localFile, saveKey, uploadToken);
    if (result.Code != 200)
    {
        throw new Exception(result.RefText);
    }
 
    return;
}

  

下载文件

1
2
3
4
5
public static void DownloadFile(string url, string localFileFullName)
{
    //文件链接地址:http://oio2cxdal.bkt.clouddn.com/1/20170213231810.jpg
    DownloadManager.Download(url, localFileFullName);
}

   

删除文件

1
2
3
4
5
6
7
public static void DeleteFile(string saveKey)
{
    Mac mac = new Mac(QiniuUtil.AccessKey, QiniuUtil.SecretKey);
    BucketManager bm = new BucketManager(mac);
 
    bm.Delete(QiniuUtil.Bucket, saveKey);
}  

SDK中还有其他方法,比如:断点续传之类的,如有需要可以继续封装

 

调用代码更简单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
QiniuUtil.AccessKey = "";
QiniuUtil.SecretKey = "";
QiniuUtil.Bucket = "";
QiniuUtil.UrlPrefix = "";
 
string saveKey = @"1/20170213231810.jpg";
 
////(OK)上传文件
//string localFile = @"d:\TestImage2.jpg";           
//QiniuUtil.UploadFile(localFile, saveKey);
 
////(OK)下载文件
//string localFile = @"d:\111.jpg";
//QiniuUtil.DownloadFile("http://oio2cxdal.bkt.clouddn.com/1/20170213231810.jpg", localFile);
 
//(OK)删除文件
QiniuUtil.DeleteFile(saveKey);

  

 

要注意的是,七牛会根据地区分配它的服务器,也就是说,如果你在华南,就不能使得华东的服务器操作。这里要修改下源码,位置如下

没有源码,直接调用方法Config.SetZone即可

修改所在区域.png

 

七牛的图片地址

看,是不是so easy

 

posted @   斜杠青年小Q  阅读(1981)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示