引用官方Dll文件和Newtonsoft.Json Dll
然后下面给出基本的操作方法(https://developer.qiniu.com/kodo/sdk/1237/csharp)

using System;
using Qiniu.Util;
using Qiniu.Http;
using System.Configuration;
using Qiniu.Common;
using Qiniu.IO.Model;
using Qiniu.IO;
using Qiniu.RS;
using Qiniu.RS.Model;
using MuYun.Controllers;

namespace MuYun.MuTools
{
public class QiNiuHelper
{

BaseController bs = new BaseController();
#region 七牛配置文件
//配置密钥
public static string AK = ConfigurationManager.AppSettings["AK"];
public static string SK = ConfigurationManager.AppSettings["SK"];
#endregion
Mac mac = new Mac(AK, SK);

#region 七牛文件上传
///

/// 简单上传-上传小文件
///

///目标空间名 ///目标文件名 ///本地文件 public string SimpleUpload(string bucket, string saveKey, string localFile)
{
// 生成(上传)凭证时需要使用此Mac
// 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
// 实际应用中,请自行设置您的AccessKey和SecretKey
//Mac mac = new Mac(AK, SK);
Config.AutoZone(AK, bucket, false);
// 上传策略,参见
// https://developer.qiniu.com/kodo/manual/put-policy
PutPolicy putPolicy = new PutPolicy();
// 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
// putPolicy.Scope = bucket + ":" + saveKey;
putPolicy.Scope = bucket;
// 上传策略有效期(对应于生成的凭证的有效期)
putPolicy.SetExpires(5256000);//10年
// 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
//putPolicy.DeleteAfterDays = 1;
// 生成上传凭证,参见
// https://developer.qiniu.com/kodo/manual/upload-token
string jstr = putPolicy.ToJsonString();
string token = Auth.CreateUploadToken(mac, jstr);
UploadManager um = new UploadManager();
HttpResult result = um.UploadFile(localFile, saveKey, token);
return bs.ToJson(result);
}

///

/// 断点续上传
///

public void ResumableUpload(string bucket, string saveKey, string localFile)
{
// 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
// 实际应用中,请自行设置您的AccessKey和SecretKey
//Mac mac = new Mac(AK, SK);

// 断点记录文件,可以不用设置,让SDK自动生成,如果出现续上传的情况,SDK会尝试从该文件载入断点记录
// 对于不同的上传任务,请使用不同的recordFile
string recordFile = "D:\\QFL\\resume.12345";
PutPolicy putPolicy = new PutPolicy();
putPolicy.Scope = bucket;
putPolicy.SetExpires(3600);
string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
// 包含两个参数,并且都有默认值
// 参数1(bool): uploadFromCDN是否从CDN加速上传,默认否
// 参数2(enum): chunkUnit上传分片大小,可选值128KB,256KB,512KB,1024KB,2048KB,4096KB
ResumableUploader ru = new ResumableUploader(false, ChunkUnit.U256K);

// ResumableUploader.UploadFile有多种形式,您可以根据需要来选择
//
// 最简模式,使用默认recordFile和默认uploadProgressHandler
//UploadFile(localFile,saveKey,token)
//
// 基本模式,使用默认uploadProgressHandler
// UploadFile(localFile,saveKey,token,recordFile)
//
// 一般模式,使用自定义进度处理(可以监视上传进度)
// UploadFile(localFile,saveKey,token,recordFile,uploadProgressHandler)
//
// 高级模式,包含上传控制(可控制暂停/继续 或者强制终止)
// UploadFile(localFile,saveKey,token,recordFile,uploadProgressHandler,uploadController)
//
// 支持自定义参数
//var extra = new System.Collections.Generic.Dictionary<string, string>();
//extra.Add("FileType", "UploadFromLocal");
//extra.Add("YourKey", "YourValue");
//uploadFile(...,extra,...)
//最大尝试次数(有效值1~20),在上传过程中(如mkblk或者bput操作)如果发生错误,它将自动重试,如果没有错误则无需重试
int maxTry = 10;
// 使用默认进度处理,使用自定义上传控制
UploadProgressHandler upph = new UploadProgressHandler(ResumableUploader.DefaultUploadProgressHandler);
UploadController upctl = new UploadController(uploadControl);
HttpResult result = ru.UploadFile(localFile, saveKey, token, recordFile, maxTry, upph, upctl);
Console.WriteLine(result);
}

public HttpResult ResumableUpload(System.IO.Stream stream, string bucket, string saveKey)
{

// 断点记录文件,可以不用设置,让SDK自动生成,如果出现续上传的情况,SDK会尝试从该文件载入断点记录
// 对于不同的上传任务,请使用不同的recordFile
Config.AutoZone(AK, bucket, false);
PutPolicy putPolicy = new PutPolicy();
putPolicy.Scope = bucket;
putPolicy.SetExpires(3600);
string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
// 包含两个参数,并且都有默认值
// 参数1(bool): uploadFromCDN是否从CDN加速上传,默认否
// 参数2(enum): chunkUnit上传分片大小,可选值128KB,256KB,512KB,1024KB,2048KB,4096KB
ResumableUploader ru = new ResumableUploader(false, ChunkUnit.U256K);

// 使用默认进度处理,使用自定义上传控制
StreamProgressHandler spph = new StreamProgressHandler(ResumableUploader.DefaultStreamProgressHandler);
UploadController upctl = new UploadController(uploadControl);

HttpResult result = ru.UploadStream(stream, saveKey, token, spph);
return result;
//return bs.ToJson(result);
}

// 内部变量,仅作演示
private static bool paused = false;
///

/// 上传控制
///

///
private static UPTS uploadControl()
{
// 这个函数只是作为一个演示,实际当中请根据需要来设置
// 这个演示的实际效果是“走走停停”,也就是停一下又继续,如此重复直至上传结束
paused = !paused;
if (paused)
{
return UPTS.Suspended;
}
else
{
return UPTS.Activated;
}
}

#endregion

#region 七牛文件下载
///

/// 七牛文件下载
///

///需要下载的文件名 ///bucket的cdn域名 "D:\\QFL\\saved-1.jpg" ///下载到本地的路径 public string SimpleDownLoad(string FileName, string BucketUrl)
{
// 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
// 实际应用中,请自行设置您的AccessKey和SecretKey
Mac mac = new Mac(AK, SK);
string rawUrl = BucketUrl + "/" + FileName;

// 设置下载链接有效期3600秒
int expireInSeconds = 3600;
string accUrl = DownloadManager.CreateSignedUrl(mac, rawUrl, expireInSeconds);
//DownloadManager.Download(rawUrl,"");
// 接下来可以使用accUrl来下载文件
//HttpResult result = DownloadManager.Download(accUrl, saveFile);

return accUrl;

}
#endregion

#region 七牛文件移动/重命名
///

/// 文件移动
///

///原Bucket ///原文件名 ///新Bucket ///新文件名 public bool MoveFile(string srcBucket, string srcKey, string dstBucket, string dstKey)
{
Mac mac = new Mac(AK, SK);
BucketManager bm = new BucketManager(mac);
HttpResult hr= bm.Move(srcBucket, srcKey, dstBucket, dstKey);
if (hr.Code==200)
{
return true;
}
else
{
return false;
}
}
#endregion

#region 七牛文件复制
///

/// 复制文件
///

///原Bucket ///原文件名 ///新Bucket ///新文件名 public bool CopyFile(string srcBucket, string srcKey, string dstBucket, string dstKey)
{
//Mac mac = new Mac(AK, SK);
BucketManager bm = new BucketManager(mac);
HttpResult hr = bm.Copy(srcBucket, srcKey, dstBucket, dstKey);
if (hr.Code == 200)
{
return true;
}
else
{
return false;
}
}
#endregion

#region 七牛文件删除
///

/// 删除文件
///

//////public void DeleteFile(string bucket, string key)
{
//Mac mac = new Mac(AK, SK);
BucketManager bm = new BucketManager(mac);
HttpResult result = bm.Delete(bucket, key);
}
#endregion

#region 七牛获取空间文件列表
///

/// 获取空间文件列表
///
/// BucketManager.listFiles(bucket, prefix, marker, limit, delimiter)
///
/// bucket: 目标空间名称
///
/// prefix: 返回指定文件名前缀的文件列表(prefix可设为null)
///
/// marker: 考虑到设置limit后返回的文件列表可能不全(需要重复执行listFiles操作)
/// 执行listFiles操作时使用marker标记来追加新的结果
/// 特别注意首次执行listFiles操作时marker为null
///
/// limit: 每次返回结果所包含的文件总数限制(limit<=1000,建议值100)
///
/// delimiter: 分隔符,比如-或者/等等,可以模拟作为目录结构(参考下述示例)
/// 假设指定空间中有2个文件 fakepath/1.txt fakepath/2.txt
/// 现设置分隔符delimiter = / 得到返回结果items =[],commonPrefixes = [fakepath/]
/// 然后调整prefix = fakepath/ delimiter = null 得到所需结果items = [1.txt,2.txt]
/// 于是可以在本地先创建一个目录fakepath,然后在该目录下写入items中的文件
///
///

public void GetFileList()
{
// 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
// 实际应用中,请自行设置您的AccessKey和SecretKey
//Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey);
string bucket = "test";
string marker = ""; // 首次请求时marker必须为空
string prefix = null; // 按文件名前缀保留搜索结果
string delimiter = null; // 目录分割字符(比如"/")
int limit = 100; // 单次列举数量限制(最大值为1000)
BucketManager bm = new BucketManager(mac);
//List items = new List();
//List commonPrefixes = new List();
do
{
ListResult result = bm.ListFiles(bucket, prefix, marker, limit, delimiter);
Console.WriteLine(result);
marker = result.Result.Marker;
//if (result.Result.Items != null)
//{
// items.AddRange(result.Result.Items);
//}
//if (result.Result.CommonPrefixes != null)
//{
// commonPrefixes.AddRange(result.Result.CommonPrefixes);
//}
} while (!string.IsNullOrEmpty(marker));
//foreach (string cp in commonPrefixes)
//{
// Console.WriteLine(cp);
//}
//foreach(var item in items)
//{
// Console.WriteLine(item.Key);
//}
}

#endregion

}
}