//封装类代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Qiniu.Conf;
using Qiniu.RS;
using Qiniu.RPC;
using Qiniu.RSF;
using Qiniu.IO;
using Qiniu.IO.Resumable;
using System.IO;
using System.Web;
using System.Drawing.Imaging;
using Qiniu.FileOp;
using System.Net;
//要先引用qiniu的dll文件
namespace ypsuit.common.QiniuHelper
{
public class QiniuHelper
{
/// <summary>
/// cdnPath为网站服务器本地路径,本地备份一份,再上传到七牛空间一份
/// </summary>
private static readonly string cdnPath = DataHelper.GetAbsolutePath(CommonFun.GetConfigData(DataConfigKey.Qiniu.ToString(), DataConfigAttr.CDN_PATH.ToString()));
/// <summary>
/// 空间名
/// </summary>
public static readonly string bucket = CommonFun.GetConfigData(DataConfigKey.Qiniu.ToString(), DataConfigAttr.BUCKET.ToString());
/// <summary>
/// 七牛外域名
/// </summary>
public static readonly string Domain = CommonFun.GetConfigData(DataConfigKey.Qiniu.ToString(), DataConfigAttr.DOMAIN.ToString());
/// <summary>
/// 在网站/程序初始化时调用一次
/// </summary>
public static void Init()
{
//设置权限key
Qiniu.Conf.Config.ACCESS_KEY = CommonFun.GetConfigData(DataConfigKey.Qiniu.ToString(), DataConfigAttr.ACCESS_KEY.ToString());
//设置密匙key
Qiniu.Conf.Config.SECRET_KEY = CommonFun.GetConfigData(DataConfigKey.Qiniu.ToString(), DataConfigAttr.SECRET_KEY.ToString());
}
#region 查看单个文件属性信息
/// <summary>
/// 查看单个文件属性信息
/// </summary>
/// <param name="bucket">七牛云存储空间名</param>
/// <param name="key">文件key</param>
public static void Stat(string bucket, string key)
{
RSClient client = new RSClient();
Entry entry = client.Stat(new EntryPath(bucket, key));
if (entry.OK)
{
Console.WriteLine("Hash: " + entry.Hash);
Console.WriteLine("Fsize: " + entry.Fsize);
Console.WriteLine("PutTime: " + entry.PutTime);
Console.WriteLine("MimeType: " + entry.MimeType);
Console.WriteLine("Customer: " + entry.Customer);
}
else
{
Console.WriteLine("Failed to Stat");
}
}
#endregion
/// <summary>
/// 复制单个文件
/// </summary>
/// <param name="bucketSrc">需要复制的文件所在的空间名</param>
/// <param name="keySrc">需要复制的文件key</param>
/// <param name="bucketDest">目标文件所在的空间名</param>
/// <param name="keyDest">标文件key</param>
public static void Copy(string bucketSrc, string keySrc, string bucketDest, string keyDest)
{
RSClient client = new RSClient();
CallRet ret = client.Copy(new EntryPathPair(bucketSrc, keySrc, bucketDest, keyDest));
if (ret.OK)
{
Console.WriteLine("Copy OK");
}
else
{
Console.WriteLine("Failed to Copy");
}
}
/// <summary>
/// 移动单个文件
/// </summary>
/// <param name="bucketSrc">需要移动的文件所在的空间名</param>
/// <param name="keySrc">需要移动的文件</param>
/// <param name="bucketDest">目标文件所在的空间名</param>
/// <param name="keyDest">目标文件key</param>
public static void Move(string bucketSrc, string keySrc, string bucketDest, string keyDest)
{
Console.WriteLine("
===> Move {0}:{1} To {2}:{3}",
bucketSrc, keySrc, bucketDest, keyDest);
RSClient client = new RSClient();
new EntryPathPair(bucketSrc, keySrc, bucketDest, keyDest);
CallRet ret = client.Move(new EntryPathPair(bucketSrc, keySrc, bucketDest, keyDest));
if (ret.OK)
{
Console.WriteLine("Move OK");
}
else
{
Console.WriteLine("Failed to Move");
}
}
/// <summary>
/// 删除单个文件
/// </summary>
/// <param name="bucket">文件所在的空间名</param>
/// <param name="key">文件key</param>
public static void Delete(string bucket, string key)
{
//Console.WriteLine("
===> Delete {0}:{1}", bucket, key);
RSClient client = new RSClient();
CallRet ret = client.Delete(new EntryPath(bucket, key));
//if (ret.OK)
//{
// Console.WriteLine("Delete OK");
//}
//else
//{
// Console.WriteLine("Failed to delete");
//}
}
/// <summary>
/// 批量获取文件信息
/// </summary>
/// <param name="bucket"></param>
/// <param name="keys"></param>
public static void BatchStat(string bucket, string[] keys)
{
RSClient client = new RSClient();
List<EntryPath> EntryPaths = new List<EntryPath>();
foreach (string key in keys)
{
Console.WriteLine("
===> Stat {0}:{1}", bucket, key);
EntryPaths.Add(new EntryPath(bucket, key));
}
client.BatchStat(EntryPaths.ToArray());
}
/// <summary>
/// 批量复制
/// </summary>
/// <param name="bucket"></param>
/// <param name="keys"></param>
public static void BatchCopy(string bucket, string[] keys)
{
List<EntryPathPair> pairs = new List<EntryPathPair>();
foreach (string key in keys)
{
EntryPathPair entry = new EntryPathPair(bucket, key, Guid.NewGuid().ToString());
pairs.Add(entry);
}
RSClient client = new RSClient();
client.BatchCopy(pairs.ToArray());
}
/// <summary>
/// 批量移动
/// </summary>
/// <param name="bucket"></param>
/// <param name="keys"></param>