现在位置首页 / 开源代码 /正文

C#上传文件到七牛云存储,支持大文件

作者: 春暖花开 | 2015年12月24日| 热度:℃ | 评论: |参与:

C# 上传文件到 七牛云存储 的方案

大文件上传。

使用七牛存储的步骤。

1、注册个账户。 http://www.qiniu.com/

2、登录后,新建个空间,为空间起个名。

3、进入七牛开发者自助平台,查看 Access Key 和 Secret Key 。

4、文件的外链地址


要接入七牛云存储,开发者需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。


本方案参考七牛开发者文档。主要实现:本地大文件上传到七牛空间。

可供资源存储 或 url 引用。


直接帖C# 代码:

 class Program
    {
        /// <summary>
        /// 上传文件的大小
        /// </summary>
        static long FileSize = 0;
        /// <summary>
        /// 当前上传了多少,计算完成比率
        /// </summary>
        static long UploadAllSize = 0;
        static void Main(string[] args)
        {
            //注册用户名,http://www.qiniu.com/
            //登录后,新建个空间,起个名“spaceqiniu888”
            //登录七牛开发者自助平台,查看 Access Key 和 Secret Key 。
            //要接入七牛云存储,开发者需要拥有一对有效的 Access Key 和 Secret Key 用来进行签名认证。
            Qiniu.Conf.Config.ACCESS_KEY = "你的 Access_key ";
            Qiniu.Conf.Config.SECRET_KEY = "你的 Secret_key ";
            
            string bucket = "spaceqiniu888";  //七牛空间的空间名
            string key = "bigfile_" + Guid.NewGuid().ToString().Substring(0, 10); //上传后,文件名
            string fname = @"D:\搜狗高速下载\PHP 学习及安装\PHP学习clksx_php_jb51.net.rar"; //本地要上传的文件
            
            System.IO.FileInfo finfo = new System.IO.FileInfo(fname);
            FileSize = finfo.Length; //计算本地文件的大小
            ResumablePutFile(bucket, key, fname);
            Console.ReadLine();
        }
        /// <summary>
        /// 七牛空间大文件上传,分块上传
        /// </summary>
        /// <param name="bucket">七牛空间名称</param>
        /// <param name="key">上传后,文件名</param>
        /// <param name="fname">本地文件名</param>
        public static void ResumablePutFile(string bucket, string key, string fname)
        {
            Console.WriteLine("\n开始上传,文件大小:" + FileSize.ToString()+" B");
            PutPolicy policy = new PutPolicy(bucket, 3600);
            string upToken = policy.Token();
            Settings setting = new Settings();
            ResumablePutExtra extra = new ResumablePutExtra();
            extra.Notify += extra_Notify; //可监听上传进度
            extra.NotifyErr += extra_NotifyErr; //可监听上传错误
            ResumablePut client = new ResumablePut(setting, extra);
            Qiniu.RPC.CallRet ret= client.PutFile(upToken, fname, key );
            if (ret.OK)
            {
                Console.WriteLine("\n\n上次完毕" + Newtonsoft.Json.JsonConvert.DeserializeObject<CallRetResponse>(ret.Response ).key );
            }
        }
        private static void extra_Notify(object sender, PutNotifyEvent e)
        {
           // e.BlkIdx.ToString(); //次数/
          //  e.BlkSize.ToString();  //当次上次的文件分块的大小
            UploadAllSize = UploadAllSize + Convert.ToInt64(e.BlkSize);
            string uploaded = (Convert.ToDouble(UploadAllSize) / Convert.ToDouble(FileSize) * 100).ToString("0.0") + " %";
            Console.WriteLine("第" + (e.BlkIdx + 1).ToString() + "次上传,已经上传:" + uploaded);
        }
        private static void extra_NotifyErr(object sender, PutNotifyErrorEvent e) {
            Console.WriteLine("上传过程中出现错误:" + e.Error);
        }
    }
    public class CallRetResponse
    {
        public string hash { get; set; }
        /// <summary>
        /// 上传后的文件名
        /// </summary>
        public string key { get; set; }
    }


参考:http://developer.qiniu.com/docs/v6/sdk/csharp-sdk.html

本示例下载地址:http://pan.baidu.com/s/1skdQTFB                  C# - VS2013 

点击阅读本文所属分类的更多文章: 开源代码 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

抢天猫双11红包
推荐使用阿里云服务器
echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询