功能:将图片上传到七牛云存储
准备工作
- 注册七牛账号,提交实名认证(基本上1天内内审核通过)
- 登录七牛后台->对象存储->新建空间 (基本概念:https://developer.qiniu.com/kodo/manual/3978/the-basic-concept)
- 新建空间后会有免费域名可以使用。但是:测试域名,限总流量,限单 IP 访问频率,限速,仅供测试使用,不能用于自定义域名的 CNAME。建议还是使用自己的已经ICP备案的域名
- CDN加速域名(自己的ICP备案的域名)提交后有个处理过程(官方说最多三个小时),处理完成后给你一个CNAME。 如何配置CNAME?
- 配置好CNAME后,接下来实现编码工作。
编码实现
- Nuget官方SDK
- 获取AccessKey,SecretKey。登录七牛管理后台->个人信息->秘钥管理
- 代码
1 /// <summary> 2 /// 实现将文件上传到七牛云 3 /// </summary> 4 /// <param name="stream">文件流</param> 5 /// <param name="fileName">文件名称</param> 6 /// <returns></returns> 7 public UploadQiNiuResult UploadImgToQiNiu(byte[] stream, string fileName) 8 { 9 Mac mac = new Mac(BlogStatic.QiNiuInfo_AccessKey, BlogStatic.QiNiuInfo_SecretKey); 10 // 上传策略,参见 11 // https://developer.qiniu.com/kodo/manual/put-policy 12 PutPolicy putPolicy = new PutPolicy(); 13 // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY" 14 // putPolicy.Scope = bucket + ":" + saveKey; 15 var saveKey = string.Format("BlogImg/{0}/", DateTime.Now.ToString("yyyy/MM/dd")) + fileName; 16 putPolicy.Scope = "blog:" + saveKey; 17 // 上传策略有效期(对应于生成的凭证的有效期) 18 putPolicy.SetExpires(3600); 19 // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除 20 // putPolicy.DeleteAfterDays = 1; 21 string jstr = putPolicy.ToJsonString(); 22 //获取上传凭证 23 var uploadToken = Auth.CreateUploadToken(mac, jstr); 24 UploadManager um = new UploadManager(); 25 26 HttpResult result = um.UploadData(stream, saveKey, uploadToken); 27 28 if (result.Code == 200) 29 { 30 return JsonConvert.DeserializeObject<UploadQiNiuResult>(result.Text); 31 } 32 return null; 33 }
- UploadQiNiuResult类
-
1 public class UploadQiNiuResult 2 { 3 public string Hash { get; set; } 4 public string Key { get; set; } 5 }
引用: