C# 文件上传到七牛云服务器(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BYH371256/article/details/83509503

本章讲述: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;
}

猜你喜欢

转载自blog.csdn.net/BYH371256/article/details/83509503