本章讲述:C# 中调用七牛云提供的SDK,实现文件简单上传功能。
分片,断点续上传讲解,请查看:C# 文件上传到七牛云服务器(二)
地址为:
开发流程步骤地址:https://blog.csdn.net/BYH371256/article/details/79868562
1、把下载的“Qiniu.dll”动态库文件,引入到项目之中;
2、添加一个类,主要作用是:七牛云的操作接口,分别添加作用名:Qiniu.Http;//七牛云http协议名空间、Qiniu.Util;//七牛云名空间、Qiniu.Storage、Qiniu.CDN
3、其他作用域:System.IO、System.Net
下面请看代码:
新建类:QiniuEnv,专门存储和七牛云服务器相关的各项数据
public class QiniuEnv
{
public string AccessKey;//管理文件 认证
public string SecretKey;//管理文件 认证
public string Bucket;//空间名,可以是公开或者私有的
public string Domain;//文件管理 外链默认域名
public string LocalFile;//本地存储文件路径
public QiniuEnv()
{
//手动把自己注册七牛云服务器的Akey和SKey,名空间、外链接默认域名填上
this.AccessKey = "";
this.SecretKey = "";
this.Bucket = "";//空间名
this.Domain = "";
this.LocalFile = "";
}
}
简单实现文件上传--直接上传
//七牛云默认参数初始化
QiniuEnv QiniuParam = new QiniuEnv();
/// 直接上传可用于数据较小的文件 图片
/// <param name="upLoadFile">上传地址</param>
/// <returns></returns>
public bool UpLoading(string upLoadFile)
{
bool bresult = false;
string fileName = System.IO.Path.GetFileNameWithoutExtension(upLoadFile);
Mac mac = new Mac(QiniuParam.AccessKey, QiniuParam.SecretKey);
string key = fileName;//文件名称
string filePath = upLoadFile;//上传路径
PutPolicy putPolicy = new PutPolicy();
putPolicy.Scope = QiniuParam.Bucket + ":" + key;
putPolicy.SetExpires(3600);
putPolicy.DeleteAfterDays = 1;
string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
Config config = new Config();
config.Zone = Zone.ZONE_CN_South;
config.UseHttps = true;
config.UseCdnDomains = true;
config.ChunkSize = ChunkUnit.U512K;
FormUploader target = new FormUploader(config);
HttpResult result = target.UploadFile(filePath, key, token, null);
string back = result.Code.ToString();
if (result.Code.ToString() == "200")
bresult = true;
return bresult;
}
实现分片上传
/// <summary>
/// 分片上传 测试
/// </summary>
/// <param name="upLoadFile">文件本地地址</param>
/// <returns></returns>
public string ResumableUpLoadingTest(string upLoadFile)
{
string CallBackUrl = "";
Mac mac = new Mac(QiniuParam.AccessKey, QiniuParam.SecretKey);
string FileName = System.IO.Path.GetFileName(upLoadFile);
string key = FileName;
string filePath = upLoadFile;
System.IO.Stream fs = System.IO.File.OpenRead(filePath);
PutPolicy putPolicy = new PutPolicy();
putPolicy.Scope = QiniuParam.Bucket + ":" + key;
putPolicy.SetExpires(3600);
putPolicy.DeleteAfterDays = 1;
string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
Config config = new Config();
config.UseHttps = true;
config.Zone = Zone.ZONE_CN_South;//根据地址选择
config.UseCdnDomains = true;
config.ChunkSize = ChunkUnit.U512K;//chunkUnit上传分片大小,可选值128KB,256KB,512KB,1024KB,2048KB,4096KB
ResumableUploader target = new ResumableUploader(config);
PutExtra extra = new PutExtra();
//设置断点续传进度记录文件
extra.ResumeRecordFile = ResumeHelper.GetDefaultRecordKey(filePath, key);
extra.ResumeRecordFile = FileName + ".progress";
HttpResult result = target.UploadStream(fs, key, token, extra);
Console.WriteLine("resume upload: " + result.ToString());
if (result.Code == 200)
{
CallBackUrl = "http://" + QiniuParam.Domain + "/" + FileName;
}
return CallBackUrl;
}