Beispiel #1
0
    /// <summary>
    /// 上传七牛图片
    /// </summary>
    /// <param name="ak">AK</param>
    /// <param name="sk">SK</param>
    /// <param name="kname">上传的空间</param>
    /// <param name="imgkey">图片名称</param>
    /// <param name="imgPath">图片路径</param>
    public static void uploadQinui(string ak, string sk, string kname, string imgkey, string imgPath)
    {
        try
        {
            //设置账号的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = ak;
            Qiniu.Conf.Config.SECRET_KEY = sk;
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //设置上传的空间
            String bucket = kname;
            //设置上传的文件的key值
            String key = imgkey;

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //上传文件的路径
            String filePath = imgPath;
            Jnwf.Utils.Log.Logger.Log4Net.Error("uploadQinui2:" + filePath + "");
            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, filePath, extra);
            Jnwf.Utils.Log.Logger.Log4Net.Error("uploadQinui1:" + ret + "");
        }
        catch (Exception ex)
        {
            Jnwf.Utils.Log.Logger.Log4Net.Error("error:uploadQinui:" + ex.Message + "|" + ex.InnerException);
        }
    }
        /// <summary>
        /// 上传到七牛
        /// </summary>
        /// <param name="myStream"></param>
        /// <param name="filename"></param>
        /// <param name="servePath">上传成功的路径</param>
        /// <returns></returns>
        public static HttpResult UploadFile(Stream myStream, string filename, out string servePath)
        {
            //code为200成功
            HttpResult result = new HttpResult()
            {
                Code = 1
            };

            servePath = "";
            try
            {
                // 上传文件名
                servePath = $"{Guid.NewGuid().ToString().Replace("-", "")}{filename}";
                Qiniu.Storage.Config config = new Qiniu.Storage.Config();
                // 设置上传区域
                config.Zone = Zone.ZONE_CN_South;
                // 设置 http 或者 https 上传
                config.UseHttps      = true;
                config.UseCdnDomains = true;
                config.ChunkSize     = ChunkUnit.U512K;
                ResumableUploader target = new ResumableUploader(config);
                PutExtra          extra  = new PutExtra();
                string            token  = GetToken();
                result = target.UploadStream(myStream, servePath, token, extra);
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(ex, "QiniutokenHelper/UploadFile");
            }
            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 上传文件,普通上传(Put)
        /// </summary>
        /// <param name="bucket_name">设置上传的空间</param>
        /// <param name="stream">上传文件流数据</param>
        /// <param name="ext"></param>
        /// <returns></returns>
        public static string Upload(string bucket_name, Stream stream, string ext)
        {
            IOClient iOClient = new IOClient();
            PutExtra extra    = new PutExtra();

            PutPolicy putPolicy = new PutPolicy(bucket_name, 3600u);

            //设置上传的文件的key值
            string key = Guid.NewGuid().ToString("N") + "." + ext;

            string upToken = putPolicy.Token(null);

            PutRet putRet = iOClient.Put(upToken, key, stream, extra);

            string result;

            if (putRet == null)
            {
                result = null;
            }
            else
            {
                if (putRet.OK)
                {
                    result = key;
                }
                else
                {
                    result = null;
                }
            }
            return(result);
        }
Beispiel #4
0
        public string UploadImage(string filePath)
        {
            Mac mac = new Mac("TYb8ZurNoN-xrUOhnNom_q3ZdPl1OLJqUsvoP0xB", "d7ajdjoitbUiJZQY7ANw5bSf3p6K3nQA8KkGxIDq");
            // 上传文件名
            string key = "putty2.gif";
            // 本地文件路径
            //string filePath = @"E:\MY\FastDevStu\Mvc\Models\微信图片_20190508193805.gif";
            // 空间名
            string Bucket = "cjj81pic";
            // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = Bucket + ":" + key;
            putPolicy.SetExpires(3600);
            string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

            Qiniu.Storage.Config config = new Qiniu.Storage.Config();
            // 设置上传区域
            config.Zone = Zone.ZONE_CN_South;
            // 设置 http 或者 https 上传
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            ResumableUploader target = new ResumableUploader(config);
            PutExtra          extra  = new PutExtra();

            //设置断点续传进度记录文件
            extra.ResumeRecordFile = ResumeHelper.GetDefaultRecordKey(filePath, key);
            Console.WriteLine("record file:" + extra.ResumeRecordFile);
            extra.ResumeRecordFile = "test.progress";
            HttpResult result = target.UploadFile(filePath, key, token, extra);

            Console.WriteLine("resume upload: " + result.ToString());
            return(result.ToString());
        }
Beispiel #5
0
    //断点续传
    public static void UploadFileResum(string key, string filePath, string uptoken, Action <string> callback)
    {
        //配置config
        Config config = new Config();

        config.Zone          = Zone.ZONE_CN_South;
        config.UseHttps      = false;
        config.UseCdnDomains = false;
        config.ChunkSize     = ChunkUnit.U512K;

        PutExtra put = new PutExtra();

        put.ProgressHandler = (long uploadedBytes, long totalBytes) =>
        {
            Debug.Log(uploadedBytes + "/" + totalBytes);
        };

        ResumableUploader ru = new ResumableUploader(config);
        var result           = ru.UploadFile(filePath, key, uptoken, put);

        if (callback != null)
        {
            callback(result.Text);
        }
    }
Beispiel #6
0
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="imgPhysicalPath"></param>
        /// <param name="imgkey">返回图片在七牛上的名称</param>
        /// <param name="isDelPhysicalPath">是否删除本地当前图片</param>
        /// <returns></returns>
        public bool UpLoadImage(string imgPhysicalPath, out string imgkey, bool isDelPhysicalPath = false)
        {
            imgkey = string.Empty;
            try
            {
                imgkey = GenerateQiniuKey;
                var      policy  = new PutPolicy(Bucket, 3600);
                string   upToken = policy.Token();
                PutExtra extra   = new PutExtra();
                extra.MimeType = "text/plain";
                extra.Crc32    = 123;
                extra.CheckCrc = CheckCrcType.CHECK;
                extra.Params   = new System.Collections.Generic.Dictionary <string, string>();

                IOClient client = new IOClient();

                client.PutFinished += new EventHandler <PutRet>((o, e) =>
                {
                    if (isDelPhysicalPath)
                    {
                        DeleteLocalImage(imgPhysicalPath);
                    }
                });
                PutRet ret = client.PutFile(upToken, imgkey, imgPhysicalPath, extra);
                imgkey = "/" + imgkey;

                return(ret.OK);
            }
            catch (Exception ex)
            {
                LogUtil.WriteLog(ex);
                return(false);
            }
        }
Beispiel #7
0
        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="imgkey">七牛显示名称(保持唯一性)</param>
        /// <param name="imgPhysicalPath"></param>
        /// <returns></returns>
        public bool UpLoadImage(string imgkey, string imgPhysicalPath)
        {
            try
            {
                var      policy  = new PutPolicy(Bucket, 3600);
                string   upToken = policy.Token();
                PutExtra extra   = new PutExtra();
                extra.MimeType = "text/plain";
                extra.Crc32    = 123;
                extra.CheckCrc = CheckCrcType.CHECK;
                extra.Params   = new System.Collections.Generic.Dictionary <string, string>();

                IOClient client = new IOClient();

                PutRet ret = client.PutFile(upToken, imgkey, imgPhysicalPath, extra);
                //client.PutFinished += new EventHandler<PutRet>((o,e)=>{
                //});

                return(ret.OK);
            }
            catch (Exception ex)
            {
                LogUtil.WriteLog(ex);
                return(false);
            }
        }
Beispiel #8
0
        private void upload()
        {
            //设置账号的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = "Access_Key";
            Qiniu.Conf.Config.SECRET_KEY = "Secret_Key";
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //设置上传的空间
            String bucket = "bucket_name";
            //设置上传的文件的key值
            String key = "yourdefinekey";

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //上传文件的路径
            String filePath = "/.../...";

            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, filePath, extra);

            //打印出相应的信息
            Console.WriteLine(ret.Response.ToString());
            Console.WriteLine(ret.key);
            Console.ReadLine();
        }
Beispiel #9
0
    /// <summary>
    /// 上传七牛图片
    /// </summary>
    /// <param name="imgkey">图片名称</param>
    /// <param name="imgPath">图片路径</param>
    public static void uploadQinui(string imgkey, string imgPath)
    {
        try
        {
            //设置账号的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = AK;
            Qiniu.Conf.Config.SECRET_KEY = SK;
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //设置上传的空间
            String bucket = NAME;
            //设置上传的文件的key值
            String key = imgkey;

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, imgPath, extra);
            if (!ret.OK)
            {
                Jnwf.Utils.Log.Logger.Log4Net.Error("error:uploadQinui:" + ret.OK + "|" + ret.Exception);
            }
        }
        catch (Exception ex)
        {
            Jnwf.Utils.Log.Logger.Log4Net.Error("error:uploadQinui:" + ex.Message + "|" + ex.InnerException);
        }
    }
        public void ResumeUploadFileTest()
        {
            Mac    mac  = new Mac(AccessKey, SecretKey);
            Random rand = new Random();
            string key  = string.Format("UploadFileTest_{0}.dat", rand.Next());

            string filePath = LocalFile;

            System.IO.Stream fs = System.IO.File.OpenRead(filePath);

            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = 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_East;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            ResumableUploader target = new ResumableUploader(config);
            PutExtra          extra  = new PutExtra();

            //设置断点续传进度记录文件
            extra.ResumeRecordFile = ResumeHelper.GetDefaultRecordKey(filePath, key);
            Console.WriteLine("record file:" + extra.ResumeRecordFile);
            extra.ResumeRecordFile = "test.progress";
            HttpResult result = target.UploadStream(fs, key, token, extra);

            Console.WriteLine("resume upload: " + result.ToString());
            Assert.AreEqual((int)HttpCode.OK, result.Code);
        }
Beispiel #11
0
        public void UpLoadToQiNiu(Stream stream, string path)
        {
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //调用Token()方法生成上传的Token
            string upToken = put.Token();

            //上传文件的路径
            //String filePath = "/.../...";

            var _path = EnsureUrlSeparatorChar(path);

            //上传 将umbraco的path作为key传入
            PutRet ret = target.Put(upToken, _path, stream, extra);

            LogHelper.Info <PutRet>("上传至七牛云" + (ret.OK ? "成功" : "失败"));

            if (ret.OK)
            {
            }
            else
            {
                throw new Exception("上传失败");
            }
        }
        /// <summary>
        /// 七牛URL上传
        /// </summary>
        /// <param name="filePath">图片绝对路径</param>
        /// <param name="fileKey">上传文件文件名(由于七牛不支持文件夹,可以在文件做手脚:比如:/aaa/xxx.jpg 这个一个合法文件名</param>
        /// <returns></returns>
        public static ApiModel <string> UploadStream(Stream stream, string fileKey /*设置上传的文件的key值*/)
        {
            //TODO:校验图片类型
            //stream.Position = 0;
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //设置上传的文件的key值
            //String key = "EDIT2/yourdefinekey3.PNG";
            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间  [:key覆盖上传]
            PutPolicy put = new PutPolicy(bucket + ":" + fileKey, 3600);
            //设置callbackUrl以及callbackBody,七牛将文件名和文件大小回调给业务服务器
            //put.CallBackUrl = "http://7xrpbe.com1.z0.glb.clouddn.com/callback";
            //put.CallBackBody = "filename=xxxxx.png&filesize=100";

            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //上传文件的路径
            //String filePath = p + @"\abc\7.png";

            //调用Put方法上传
            PutRet ret = target.Put(upToken, fileKey, stream, extra);

            return(new ApiModel <string>
            {
                ReturnValue = ret.OK ? (int)ErrorCode.Success : 0,
                DataModel = ret.key,
                Message = ret.Exception != null?ret.Exception.ToString() : ""
            });
        }
Beispiel #13
0
        private void upload()
        {
            //设置账号的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = "Access_Key";
            Qiniu.Conf.Config.SECRET_KEY = "Secret_Key";
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //设置上传的空间
            String bucket = "bucket_name";
            //设置上传的文件的key值
            String key = "yourdefinekey";

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //设置callbackUrl以及callbackBody,七牛将文件名和文件大小回调给业务服务器
            put.CallBackUrl  = "http://your.domain.com/callback";
            put.CallBackBody = "filename=$(fname)&filesize=$(fsize)";

            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //上传文件的路径
            String filePath = "/.../...";

            PutRet ret = target.PutFile(upToken, key, filePath, extra);

            //打印出相应的信息
            Console.WriteLine(ret.Response.ToString());
            Console.WriteLine(ret.key);
            Console.ReadLine();
        }
Beispiel #14
0
        public static string UploadAttachment(string filepath, string files = "orders")
        {
            string allFilePath = "";

            Config.Init();
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            Dictionary <string, object> param = GetQNToken();
            //调用Token()方法生成上传的Token
            string upToken = param["uptoken"].ToString();

            //上传文件的路径
            if (!string.IsNullOrEmpty(filepath))
            {
                string[] filepaths = filepath.Split(',');
                foreach (string file in filepaths)
                {
                    if (!string.IsNullOrEmpty(file))
                    {
                        var fileExtension = file.Substring(file.LastIndexOf(".") + 1).ToLower();
                        var key           = files + (DateTime.Now.Year + "." + DateTime.Now.Month + "." + DateTime.Now.Day + "/") + GetTimeStamp() + "." + fileExtension;
                        //调用PutFile()方法上传
                        PutRet ret = target.PutFile(upToken, key, file, extra);
                        if (ret.OK)
                        {
                            allFilePath += param["imgurl"] + ret.key + ",";
                        }
                    }
                }
            }
            return(allFilePath.TrimEnd(','));
        }
Beispiel #15
0
 public static string PutFile(string bucket, string key, Stream stream)
 {
     try
     {
         var    scope   = bucket + ":" + key;
         var    policy  = new PutPolicy(scope);
         string upToken = policy.Token();
         var    extra   = new PutExtra();
         var    client  = new IOClient();
         var    ret     = client.Put(upToken, key, stream, extra);
         if (ret.OK)
         {
             return(string.Format(ConfigUtility.GetValue("QiNiuDomain"), bucket) + ret.key);
         }
         else
         {
             return("");
         }
     }
     catch (Exception e)
     {
         log4net.LogManager.GetLogger("ImageUpload").Error(e.Message);
         return("");
     }
 }
Beispiel #16
0
        public void PutFileTest()
        {
            IOClient target = new IOClient();
            string   key    = NewKey;

            PrintLn(key);
            PutExtra extra = new PutExtra();              // TODO: 初始化为适当的值

            extra.MimeType = "text/plain";
            extra.Crc32    = 123;
            extra.CheckCrc = CheckCrcType.CHECK;
            extra.Params   = new System.Collections.Generic.Dictionary <string, string> ();
            PutPolicy put  = new PutPolicy(Bucket);
            TmpFIle   file = new TmpFIle(1024 * 10);

            target.PutFinished += new EventHandler <PutRet> ((o, e) => {
                file.Del();
                if (e.OK)
                {
                    RSHelper.RSDel(Bucket, file.FileName);
                }
            });

            PutRet ret = target.PutFile(put.Token(), file.FileName, file.FileName, extra);

            //error params
            //target.PutFile("error", "error", "error", null);
            Assert.IsTrue(ret.OK, "PutFileTest Failure");
        }
Beispiel #17
0
        private void upload()
        {
            //设置账号的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = "Access_Key";
            Qiniu.Conf.Config.SECRET_KEY = "Secret_Key";
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //设置上传的空间
            String bucket = "bucket_name";
            //设置上传的文件的key值
            String key = "yourdefinekey";

            //覆盖上传,<bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。
            PutPolicy put = new PutPolicy(bucket + ":" + key, 3600);

            //设置callbackUrl以及callbackBody,七牛将文件名和文件大小回调给业务服务器
            put.CallBackUrl  = "http://your.domain.com/callback";
            put.CallBackBody = "filename=$(fname)&filesize=$(fsize)";

            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //上传文件的路径
            String filePath = "/.../...";

            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, filePath, extra);

            //打印出相应的信息
            Console.WriteLine(ret.Response.ToString());
            Console.WriteLine(ret.key);
            Console.ReadLine();
        }
Beispiel #18
0
        public static async Task <List <string> > RSPut(string bucket, int num)
#endif
        {
            IOClient target = new IOClient();
            string   key    = "csharp" + Guid.NewGuid().ToString();
            //PrintLn(key);
            PutExtra extra = new PutExtra();             // TODO: 初始化为适当的值

            extra.MimeType = "text/plain";
            PutPolicy     put     = new PutPolicy(bucket);
            List <string> newKeys = new List <string>();

            for (int i = 0; i < num; i++)
            {
                key = "csharp" + Guid.NewGuid().ToString();
#if NET20 || NET40
                PutRet ret = target.Put(put.Token(), key, StreamEx.ToStream("Hello, Qiniu Cloud!"), extra);
#else
                PutRet ret = await target.PutAsync(put.Token(), key, StreamEx.ToStream("Hello, Qiniu Cloud!"), extra);
#endif
                if (ret.OK)
                {
                    newKeys.Add(key);
                }
            }
            return(newKeys);
        }
Beispiel #19
0
        public void PutTest()
        {
            IOClient target = new IOClient();
            string   key    = NewKey;

            PrintLn(key);
            PutExtra extra = new PutExtra(); // TODO: 初始化为适当的值

            extra.MimeType = "text/plain";
            extra.Crc32    = 123;
            extra.CheckCrc = CheckCrcType.CHECK;
            extra.Params   = new System.Collections.Generic.Dictionary <string, string>();
            PutPolicy put = new PutPolicy(Bucket);

            target.PutFinished += new EventHandler <PutRet>((o, e) =>
            {
                if (e.OK)
                {
                    RSHelper.RSDel(Bucket, key);
                }
            });
            string token = put.Token();
            PutRet ret   = target.Put(put.Token(), key, StreamEx.ToStream("Hello, Qiniu Cloud!"), extra);

            Assert.IsTrue(ret.OK, "PutFileTest Failure");
        }
Beispiel #20
0
        public static string PutAudioFile(byte[] datas, string bucketId, string key)
        {
            var bucket        = GetBucket(bucketId);
            var finalDocument = bucketId + "_" + key;
            var str           = Base64.UrlSafeBase64Encode(bucket.bucket + ":" + finalDocument + ".mp3");
            var policy        = new PutPolicy
            {
                Scope = bucket.bucket + ":" + finalDocument,
                PersistentPipeline  = "webmTomp3",
                PersistentOps       = "avthumb/mp3|saveas/" + str,
                PersistentNotifyUrl = "http://fake.com/qiniu/notify"
            };

            policy.SetExpires(PolicyTimeout);
            var upToken    = Auth.CreateUploadToken(CurMac, policy.ToJsonString());
            var dictionary = new Dictionary <string, string>
            {
                { "scope", policy.Scope },
                { "persistentPipeline", policy.PersistentPipeline },
                { "persistentOps", policy.PersistentOps },
                { "persistentNotifyUrl", policy.PersistentNotifyUrl }
            };
            var extra = new PutExtra
            {
                Params = dictionary
            };
            var target    = new UploadManager(CurConfig);
            var putStream = new MemoryStream(datas);

            target.UploadStream(putStream, finalDocument, upToken, extra);

            return(bucket.baseURL + "/" + finalDocument + ".mp3");
        }
Beispiel #21
0
        /// <summary>
        /// Amr文件转Mp3
        /// </summary>
        /// <param name="fileName">文件名,aa.amr</param>
        /// <param name="stream">文件流</param>
        /// <param name="notifyUrl">七牛转码成功后用于接收通知的url</param>
        /// <returns>文件外链</returns>
        public static async Task <string> PutAmrToMp3Async(string fileName, Stream stream, string notifyUrl)
        {
            PutPolicy policy = new PutPolicy(_bucket, 3600);
            PutExtra  extra  = new PutExtra();
            IOClient  client = new IOClient();

            //对转码后的文件进行使用saveas参数自定义命名,也可以不指定,文件会默认命名并保存在当前空间。
            fileName = fileName.Split('.')[0] + ".mp3";
            string urlbase64 = Base64URLSafe.Encode(_bucket + ":" + fileName);

            //一般指文件要上传到的目标存储空间(Bucket)。若为“Bucket”,
            //表示限定只能传到该Bucket(仅限于新增文件);若为”Bucket:Key”,表示限定特定的文件,可修改该文件。
            policy.Scope = _bucket + ":" + fileName;
            // 可选。 若非0, 即使Scope为 Bucket:Key 的形式也是insert only.
            policy.InsertOnly = 0;
            // "|"竖线前是你要转换格式的命令;竖线后是转换完成后,文件的命名和存储的空间的名称!
            policy.PersistentOps = "avthumb/mp3/ab/128k/ar/44100/acodec/libmp3lame|saveas/" + urlbase64;
            //规定文件要在那个“工厂”进行改装,也就是队列名称!
            //policy.PersistentPipeline = "LittleBai";
            //音视频转码持久化完成后,七牛的服务器会向用户发送处理结果通知。这里指定的url就是用于接收通知的接口。
            //设置了`persistentOps`,则需要同时设置此字段
            policy.PersistentNotifyUrl = "http://wwwtest.rupeng.cn:9090/upload/uploadFile";

            string upToken = policy.Token();
            var    putRet  = await client.PutAsync(upToken, fileName, stream, extra);

            return(putRet.StatusCode == HttpStatusCode.OK ? $"{Config.API_HOST}/{putRet.key}" : null);
        }
Beispiel #22
0
        /// <summary>
        /// 上传图片到七牛空间
        /// </summary>
        /// <param name="bucket">设置上传的空间 "zynblog"</param>
        /// <param name="key">目标资源的最终名字."headicon/20160601/55c48c00-cc9e-42e4-8ad1-610d640b099f.jpg"</param>
        /// <param name="filePath">上传文件的本地路径</param>
        public static bool UploadFile(string bucket, string key, string filePath)
        {
            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //调用Token()方法生成上传的Token
            string upToken = put.Token();

            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, filePath, extra);

            //如果资源上传成功,服务端会响应HTTP 200返回码,且在响应内容中包含两个字段:
            //实验表明:在断网情况下,状态码依然为200!!!!
            //System.Net.HttpStatusCode code = ret.StatusCode; //OK:200
            //bool flag = false;
            //if (code == System.Net.HttpStatusCode.OK)
            //    flag = true;
            //return flag;

            bool flag = false;

            if (ret.key != null && ret.Hash != null)
            {
                flag = true;
            }

            return(flag);
        }
Beispiel #23
0
        public void Test()
        {
            //设置账号的AK和SK
            Config.ACCESS_KEY = "8NXAoPOInRsnTVomjBKUC3KHCvfWfZFqRLenOANR";
            Config.SECRET_KEY = "xyQ7wcbLukoGUFFCV814PRU9HSf9S3gniEKs6E9M";

            //设置上传的空间
            string bucket = "helloworld";

            //普通上传,只需要设置上传的空间名就可以了,第二个参数可以设定token过期时间
            PutPolicy put = new PutPolicy(bucket, 3600);

            //调用Token()方法生成上传的Token
            string upToken = put.Token();

            //string upToken = @"APZpifSHJlh0TYB2UJRm5WXyo_zB4cF5oyUFrwu4:Os7lv0cv3ngPdcp3hAEyAWkpspU=:eyJzY29wZSI6InJvbmciLCJkZWFkbGluZSI6MTQ2OTA2OTM4NCwiaW5zZXJ0T25seSI6MCwiZGV0ZWN0TWltZSI6MCwiZnNpemVMaW1pdCI6MCwiZnNpemVNaW4iOjAsImNhbGxiYWNrRmV0Y2hLZXkiOjB9";
            ////string upToken = @"APZpifSHJlh0TYB2UJRm5WXyo_zB4cF5oyUFrwu4:dIynZd9Ln8Vz43x2Eo6j-Ugy5IA=:eyJzY29wZSI6InJvbmciLCJkZWFkbGluZSI6MTQ2OTA3MDEyMSwiaW5zZXJ0T25seSI6MCwiZGV0ZWN0TWltZSI6MCwiZnNpemVMaW1pdCI6MCwiZnNpemVNaW4iOjAsImNhbGxiYWNrRmV0Y2hLZXkiOjB9";

            //上传文件的路径
            string filePath = "UploadFiles/Helloworld.txt";
            //设置上传的文件的key值
            string key = "test_helloworld4.txt";

            IOClient target = new IOClient();
            PutExtra extra  = new PutExtra();
            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, filePath, extra);

            ret.OK.ShouldBe(true);

            //打印出相应的信息
            //var response = ret.Response.ToString();
            //var retKey = ret.key;
        }
Beispiel #24
0
        public static ResultData UploadFileToServer(string filekey, string fpath, FileTypeDirEnum dir, bool isOverride, Action <int> proAction)
        {
            ResultData result = new ResultData();

            //设置账号的AK和SK
            Qiniu.Conf.Config.ACCESS_KEY = QiniuConfig.AccessKey;
            Qiniu.Conf.Config.SECRET_KEY = QiniuConfig.SecretKey;

            IOClient target = new IOClient();

            target.ProgressHandler += (x, y) =>
            {
                proAction?.Invoke(y.Progress);
            };
            PutExtra extra = new PutExtra();
            //设置上传的空间
            string bucket = QiniuUtil.GetServerBucket(dir);
            //设置上传的文件的key值
            string key = filekey;


            //覆盖上传,<bucket>:<key>,表示只允许用户上传指定key的文件。在这种格式下文件默认允许“修改”,已存在同名资源则会被本次覆盖。
            PutPolicy put = new PutPolicy(bucket, 3600);

            if (isOverride)
            {
                put = new PutPolicy(string.Format("{0}:{1}", bucket, key));
            }

            //VideoWaterMark(put, key, bucket);
            //调用Token()方法生成上传的Token
            string upToken = put.Token();
            //上传文件的路径
            string filePath = fpath;

            //调用PutFile()方法上传
            PutRet ret = target.PutFile(upToken, key, filePath, extra);
            //打印出相应的信息
            string json = ret.Response.ToString();

            if (json.Contains("hash") && json.Contains("key"))
            {
                ResData user = (ResData)JsonConvert.DeserializeObject(json, typeof(ResData));
                result.HashCode  = user.hash;
                result.IsSuccess = true;
                result.Key       = user.key;
                result.FullUrl   = QiniuUtil.GetFullUrl(user.key, dir);
            }
            else
            {
                result.IsSuccess = false;
                var resData = (ErrData)JsonConvert.DeserializeObject(json, typeof(ErrData));
                result.ErrCode = resData.code;
                result.ErrMsg  = resData.error;
            }

            return(result);
        }
        /// <summary>
        /// 得到文件上传额外参数
        /// </summary>
        /// <param name="uploadPersistentOps"></param>
        /// <returns></returns>
        protected PutExtra GetPutExtra(UploadPersistentOps uploadPersistentOps = null)
        {
            PutExtra putExtra = new PutExtra();

            if (uploadPersistentOps != null)
            {
                if (!string.IsNullOrEmpty(uploadPersistentOps.ResumeRecordFile))
                {
                    putExtra.ResumeRecordFile = uploadPersistentOps.ResumeRecordFile;
                }

                if (uploadPersistentOps.Params != null && uploadPersistentOps.Params.Count > 0)
                {
                    putExtra.Params = uploadPersistentOps.Params;
                }

                if (!string.IsNullOrEmpty(uploadPersistentOps.MimeType))
                {
                    putExtra.MimeType = uploadPersistentOps.MimeType;
                }

                if (uploadPersistentOps.ProgressAction != null)
                {
                    putExtra.ProgressHandler = (long uploadedBytes, long totalBytes) =>
                    {
                        uploadPersistentOps.ProgressAction(uploadedBytes, totalBytes);
                    };
                }

                if (uploadPersistentOps.UploadController != null)
                {
                    var             state = putExtra.UploadController();
                    UploadStateEnum uploadState;
                    if (state == UploadControllerAction.Activated)
                    {
                        uploadState = UploadStateEnum.Activated;
                    }
                    else if (state == UploadControllerAction.Aborted)
                    {
                        uploadState = UploadStateEnum.Aborted;
                    }
                    else
                    {
                        uploadState = UploadStateEnum.Suspended;
                    }

                    uploadPersistentOps.UploadController?.Invoke(uploadState);
                }

                if (uploadPersistentOps.MaxRetryTimes != -1)
                {
                    putExtra.MaxRetryTimes = uploadPersistentOps.MaxRetryTimes;
                }
            }

            return(putExtra);
        }
Beispiel #26
0
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="localFile">文件路径</param>
        /// <returns>文件外链</returns>
        public static async Task <string> PutFileAsync(string localFile)
        {
            var      policy  = new PutPolicy(_bucket, 3600);
            string   upToken = policy.Token();
            PutExtra extra   = new PutExtra();
            IOClient client  = new IOClient();
            var      putRet  = await client.PutFileAsync(upToken, new FileInfo(localFile).Name, localFile, extra);

            return(putRet.StatusCode == HttpStatusCode.OK ? $"{Config.API_HOST}/{putRet.key}" : null);
        }
Beispiel #27
0
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="name">自定义资源名称</param>
        /// <param name="src">路径</param>
        /// <returns></returns>
        public static bool PutFile(string name, string src)
        {
            var      policy  = new PutPolicy(bucket, 3600);
            string   upToken = policy.Token();
            PutExtra extra   = new PutExtra();
            IOClient client  = new IOClient();
            var      e       = client.PutFile(upToken, name, src, extra);

            return(e.OK);
        }
Beispiel #28
0
        /// <summary>
        /// 上传文件测试
        /// </summary>
        /// <param name="bucket"></param>
        /// <param name="key"></param>
        /// <param name="fname"></param>
        public bool PutFile(string bucket, string key, string fname)
        {
            var      policy  = new PutPolicy(bucket);
            string   upToken = policy.Token();
            PutExtra extra   = new PutExtra();
            IOClient client  = new IOClient();
            PutRet   atr     = client.PutFile(upToken, key, fname, extra);

            return(atr.OK);
        }
Beispiel #29
0
        /// <summary>
        /// 上传文件测试
        /// </summary>
        /// <param name="bucket"></param>
        /// <param name="key"></param>
        /// <param name="fname"></param>
        public static void PutFile(string bucket, string key, string fname)
        {
            var      policy  = new PutPolicy(bucket, 3600);
            string   upToken = policy.Token();
            PutExtra extra   = new PutExtra();
            IOClient client  = new IOClient();
            PutRet   putret  = client.PutFile(upToken, key, fname, extra);

            string str = putret.OK.ToString();
        }
Beispiel #30
0
        public static bool PutFile(string key, string fname)
        {
            var      policy  = new PutPolicy(bucket, 3600);
            string   upToken = policy.Token();
            PutExtra extra   = new PutExtra();
            IOClient client  = new IOClient();
            var      putFile = client.PutFile(upToken, key, fname, extra);

            return(putFile.OK);
        }