Exemple #1
0
        private bool UploadFileOverlay(string file, bool overLay = false)
        {
            //  string filePath = LocalFile;
            if (uploadResult == null)
            {
                uploadResult = new StringBuilder();
            }
            if (putPolicy != null)
            {
                string           key = Path.GetFileName(file);
                System.IO.Stream fs  = System.IO.File.OpenRead(file);
                if (overLay)
                {
                    putPolicy.Scope = bucket + ":" + key;
                }
                else
                {
                    putPolicy.Scope = bucket;
                }
                putPolicy.SetExpires(3600);

                putPolicy.DeleteAfterDays = qiNiuClientCfg.DeleteAfterDays;


                string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

                ResumableUploader target = new ResumableUploader(config);
                PutExtra          extra  = new PutExtra {
                    ResumeRecordFile = ResumeHelper.GetDefaultRecordKey(file, key)
                };
                //设置断点续传进度记录文件

                uploadResult.AppendLine("record file:" + extra.ResumeRecordFile);
                // extra.ResumeRecordFile = "test.progress";
                //todo:未实现上传进度
                HttpResult result = target.UploadStream(fs, key, token, extra);

                if (result.Code == 200)
                {
                    uploadResult.AppendLine("上传成功! ");
                    return(true);
                }
                else
                {
                    string s = $"Code={result.Code},Text={result.Text}";
                    uploadResult.AppendLine("uploadResult:" + s);
                    return(false);
                }
            }
            uploadResult.AppendLine("成员变量putPolicy为空!");
            return(false);
        }
        public IActionResult UploadByFile()
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac mac = new Mac(accessKey, secretKey);
            //你的OSS的名称
            string bucket = this.bucket;

            string saveKey   = Guid.NewGuid() + ".png";
            string localFile = "C:\\Users\\86551\\Desktop\\test.png";
            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            //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);
            QiNiuFileUploadResponse response = JsonConvert.DeserializeObject <QiNiuFileUploadResponse>(result.Text);

            return(Json(result));
        }
Exemple #3
0
        /// <summary>
        /// 删除云端图片
        /// </summary>
        /// <param name="filename">文件名称</param>
        /// <returns></returns>
        public static CloudFile GetToken()
        {
            var model = new CloudFile();

            try
            {
                Mac mac = new Mac(Ak, Sk);
                // 上传策略,参见
                // https://developer.qiniu.com/kodo/manual/put-policy
                PutPolicy putPolicy = new PutPolicy();
                // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
                // putPolicy.Scope = bucket + ":" + saveKey;
                putPolicy.Scope = Bucket;
                // 上传策略有效期(对应于生成的凭证的有效期)
                putPolicy.SetExpires(3600);
                // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
                //putPolicy.DeleteAfterDays = 1;
                // 生成上传凭证,参见
                // https://developer.qiniu.com/kodo/manual/upload-token
                string jstr  = putPolicy.ToJsonString();
                string token = Auth.CreateUploadToken(mac, jstr);
                model.Token = token;
                model.Page  = BasePath;
            }
            catch (Exception ex)
            {
                model.Code    = 500;
                model.Message = ex.Message;
            }
            return(model);
        }
Exemple #4
0
        /// <summary>
        /// 简单上传-上传字节数据
        /// </summary>
        public static string UploadData(string saveKey, byte[] data)
        {
            string fileUrl = string.Empty;

            // 生成(上传)凭证时需要使用此Mac
            Mac    mac    = new Mac(AK, SK);
            string bucket = imageBucket;
            ZoneID zoneId = ZoneID.CN_South;

            Qiniu.Common.Config.SetZone(zoneId, 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(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            //putPolicy.DeleteAfterDays = 1;
            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            string       jstr   = putPolicy.ToJsonString();
            string       token  = Auth.CreateUploadToken(mac, jstr);
            FormUploader fu     = new FormUploader();
            HttpResult   result = fu.UploadData(data, saveKey, token);

            // Console.WriteLine(result);

            fileUrl = domain + saveKey;
            return(fileUrl);
        }
        public void UploadFileTest()
        {
            Mac    mac  = new Mac(AccessKey, SecretKey);
            Random rand = new Random();
            string key  = string.Format("UploadFileTest_{0}.dat", rand.Next());

            string filePath = LocalFile;

            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.Zone          = Zone.ZONE_CN_East;
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            FormUploader target = new FormUploader(config);
            HttpResult   result = target.UploadFile(filePath, key, token, null);

            Console.WriteLine("form upload result: " + result.ToString());
            Assert.AreEqual((int)HttpCode.OK, result.Code);
        }
Exemple #6
0
        public static string GenerateToken()
        {
            string AK = "";
            string SK = "";

            // ZoneID zoneId = ZoneID.CN_East;
            // [CN_East:华东] [CN_South:华南] [CN_North:华北] [US_North:北美]
            // USE_HTTPS = (true|false) 是否使用HTTPS
            Config.SetZone(ZoneID.CN_North, 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(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            //putPolicy.DeleteAfterDays = 1;

            Mac mac = new Mac(AK, SK);

            macKey = mac;
            Auth   auth  = new Auth(mac);
            string token = auth.CreateUploadToken(putPolicy.ToJsonString());

            return(token);
        }
Exemple #7
0
        public APIResult UploadAvatar(UploadAvatarInput input)
        {
            APIResult result = new APIResult(true);

            var file = input.avatarFile;

            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独提供了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Qiniu.Common.Config.SetZone(Qiniu.Common.ZoneID.CN_South, false);
            Mac mac = new Mac(APP_KEY, SECRET_KEY);

            string bucket  = "gougouapp";
            string saveKey = file.Name;

            // 上传策略,参见
            // http://developer.qiniu.com/article/developer/security/put-policy.html
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket;

            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);

            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // http://developer.qiniu.com/article/developer/security/upload-token.html

            string jstr  = putPolicy.ToJsonString();
            string token = Auth.CreateUploadToken(mac, jstr);

            FormUploader fu = new FormUploader();

            // 支持自定义参数
            //var extra = new System.Collections.Generic.Dictionary<string, string>();
            //extra.Add("FileType", "UploadFromLocal");
            //extra.Add("YourKey", "YourValue");
            //UploadFile(...,extra)
            if (file.Length > 0)
            {
                using (var stream = new MemoryStream())
                {
                    file.CopyTo(stream);
                    var        buffer       = stream.ToArray();
                    HttpResult uploadResult = fu.UploadData(buffer, saveKey, token);
                    result.success = uploadResult.Code == 200;
                }
            }
            else
            {
                result.success = false;
                result.message = "请选择需要上传的文件";
            }

            return(result);
        }
Exemple #8
0
        /// <summary>
        /// 上传图片到七牛
        /// </summary>
        /// <param name="bucket"></param>
        /// <param name="fileStream"></param>
        /// <param name="saveKey"></param>
        /// <returns></returns>
        private static async Task <bool> UploadStream(string bucket, Stream fileStream, string saveKey)
        {
            var res = false;

            try
            {
                var mac       = new Mac(_settings.QiniuOption.AccessKey, _settings.QiniuOption.SecretKey);
                var putPolicy = new PutPolicy
                {
                    Scope = bucket + ":" + saveKey
                };
                putPolicy.SetExpires(3600); // 上传策略有效期(对应于生成的凭证的有效期)
                var jstr   = putPolicy.ToJsonString();
                var token  = Auth.CreateUploadToken(mac, jstr);
                var fu     = new FormUploader();
                var result = await fu.UploadStreamAsync(fileStream, saveKey, token);

                if (result.Code == 200)
                {
                    res = true;
                }
            }
            catch (Exception ex)
            {
                _toollogger.LogError("上传图片到云存储异常:异常信息:" + ex);
            }

            return(res);
        }
Exemple #9
0
        static void Main(string[] args)
        {
            Mac    mac       = new Mac("2hrivlc6eBhOJdE4wd-n0oXlg_m6Bz5pG-PJW4lB", "q9tYfpo4JkpqYQfW5FiY1okFHeuGT7ylMkcNND_U");
            string bucket    = "exceed295";
            string saveKey   = "a.jpg";
            string localFile = "D:\\1.png";

            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            Qiniu.Common.Config.AutoZone("2hrivlc6eBhOJdE4wd-n0oXlg_m6Bz5pG-PJW4lB", bucket, true);
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            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);

            Console.WriteLine(result);
            Console.ReadKey();
        }
Exemple #10
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");
        }
Exemple #11
0
        public static string UploadFile(
            string serverFilePath,
            string bucketId = "resources",
            Action <string> afterUploadedHandle = null)
        {
            if (!QiniuConfiguration.Instance.IsRunning || m_Config == null)
            {
                return("");
            }

            Mac mac       = CurMac;
            var localFile = serverFilePath;
            var file      = new System.IO.FileInfo(localFile);

            var       bucket    = GetBucket(bucketId);
            PutPolicy putPolicy = new PutPolicy
            {
                Scope = bucket.bucket
            };
            var iTimeout = PolicyTimeout;

            if (iTimeout > 0)
            {
                putPolicy.SetExpires(iTimeout);
            }

            var          jstr   = putPolicy.ToJsonString();
            var          token  = Auth.CreateUploadToken(mac, jstr);
            FormUploader target = new FormUploader(CurConfig);

            target.UploadFile(localFile, file.Name, token, null);
            afterUploadedHandle?.Invoke(localFile);
            return(bucket.baseURL + "/" + file.Name);
        }
Exemple #12
0
        public static async Task <string> UploadData(byte[] data, string fileName, string username)
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            // Config文件里有设置
            Mac    mac     = new Mac(Config.config.AK, Config.config.SK);
            string bucket  = Config.config.bucket;
            string saveKey = username + fileName;

            // byte[] data = System.IO.File.ReadAllBytes("D:/QFL/1.mp3");
            //byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello World!");
            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket + ":" + saveKey;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);
            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            putPolicy.DeleteAfterDays = 1;
            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            string       jstr   = putPolicy.ToJsonString();
            string       token  = Auth.CreateUploadToken(mac, jstr);
            FormUploader fu     = new FormUploader();
            HttpResult   result = await fu.UploadDataAsync(data, saveKey, token);

            JObject jobj = JObject.Parse(result.Text);

            // var i = new MessageDialog(jobj["key"].ToString()).ShowAsync();
            return(Config.config.qiniuPrefix + jobj["key"].ToString());
        }
Exemple #13
0
        /// <summary>
        /// 上传文件
        /// </summary>
        /// <param name="upFileFullName">上传文件全路径</param>
        /// <param name="AccessKey">密钥AK</param>
        /// <param name="SecretKey">密钥SK</param>
        /// <param name="bucket">存储空间</param>
        /// <param name="cdnPath">文件前缀</param>
        /// <param name="saveDays">文件保存天数 0 表示永久存储</param>
        /// <param name="zone">Cdn区域 枚举 默认华东</param>
        /// <returns>
        /// HttpResult.
        /// </returns>
        public static HttpResult UpFile(string upFileFullName, string AccessKey, string SecretKey, string bucket, string cdnPath, int saveDays = 0, Zone zone = null)
        {
            Mac    mac  = new Mac(AccessKey, SecretKey);
            Random rand = new Random();

            if (!cdnPath.EndsWith("/"))
            {
                cdnPath += "/";
            }

            var       key       = cdnPath + Path.GetFileName(upFileFullName);
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = bucket + ":" + key;
            putPolicy.SetExpires(3600);
            putPolicy.DeleteAfterDays = saveDays;
            string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            Config config = new Config();

            config.Zone          = (zone == null ? Zone.ZONE_CN_East : zone);
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            FormUploader target = new FormUploader(config);

            return(target.UploadFile(upFileFullName, key, token, null));
        }
Exemple #14
0
        /// <summary>
        /// 简单上传
        /// </summary>
        public string UploadFile(string localFile)
        {
            if (!File.Exists(localFile))
            {
                return("文件不存在");
            }
            var    filename  = Path.GetFileName(localFile);  //文件名
            var    extension = Path.GetExtension(localFile); //扩展名
            var    mac       = new Mac(AccessKey, SecretKey);
            var    rand      = new Random();
            string key       = filename;
            //string key = $"jnkj_{rand.Next()}{extension}";
            var putPolicy = new PutPolicy {
                Scope = Bucket
            };

            putPolicy.SetExpires(31536000);
            //putPolicy.DeleteAfterDays = 1;
            var token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            var config = new Config
            {
                Zone          = Zone.ZONE_CN_South,
                UseHttps      = true,
                UseCdnDomains = true,
                ChunkSize     = ChunkUnit.U512K
            };
            FormUploader target = new FormUploader(config);
            var          result = target.UploadFile(localFile, key, token, null);

            return(result.Code.ToString());
        }
Exemple #15
0
        public HttpResponseMessage uploadToken()
        {
            Result <string> r = new Result <string>();
            List <string>   s = new List <string>();

            try
            {
                string    AK        = ConfigurationManager.AppSettings.Get("AK");
                string    SK        = ConfigurationManager.AppSettings.Get("SK");
                Mac       mac       = new Mac(AK, SK);
                Auth      auth      = new Auth(mac);
                string    bucket    = "cris";
                string    saveKey   = Conn.GetTimeStamp() + ".png";
                PutPolicy putPolicy = new PutPolicy();
                putPolicy.Scope = bucket;
                // 上传策略有效期(对应于生成的凭证的有效期)
                putPolicy.SetExpires(3600);
                Qiniu.JSON.JsonHelper.JsonSerializer   = new AnotherJsonSerializer();
                Qiniu.JSON.JsonHelper.JsonDeserializer = new AnotherJsonDeserializer();
                string jstr  = putPolicy.ToJsonString();
                string token = Auth.CreateUploadToken(mac, jstr);
                s.Add(token);
                r.code    = "0000";
                r.success = "true";
                r.message = "请求成功";
            }
            catch (Exception e) {
                r.code    = "0001";
                r.success = "false";
                r.message = e.Message;
            }
            r.data       = s;
            r.systemTime = Conn.GetTimeStamp();
            return(Conn.toJson(r));
        }
        /// <summary>
        ///  简单上传-上传小文件 (根据路径上传图片)
        /// </summary>
        /// <param name="localFile">本地文件</param>
        /// <param name="prefix">前缀</param>
        /// <param name="saveKey">保存路径</param>
        /// <returns></returns>
        public static string uploadFile(string localFile, string prefix, string saveKey)
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独提供了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey);

            // 上传策略,参见
            // http://developer.qiniu.com/article/developer/security/put-policy.html
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = Settings.Bucket;

            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.setExpires(3600);

            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认)则不删除
            //putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // http://developer.qiniu.com/article/developer/security/upload-token.html
            string token = Auth.createUploadToken(mac, putPolicy.ToJsonString());

            FormUploader su     = new FormUploader();
            HttpResult   result = su.uploadFile(localFile, prefix + "/" + saveKey, token);

            //判断是否上传成功,上传成功,返回路径,否则返回空值
            if (result.Code != 200)
            {
                return("");
            }
            return(Settings.HostAddress + prefix + "/" + saveKey);
        }
Exemple #17
0
        public Video InsertVideo(byte[] videoBinary, string extension, string mimeType, string seoFilename, bool isNew = true)
        {
            string    saveKey   = Guid.NewGuid().ToString() + extension;
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.SetExpires(3600);
            putPolicy.InsertOnly = 1;
            string        jstr   = putPolicy.ToJsonString();
            string        token  = Auth.CreateUploadToken(mac, jstr);
            UploadManager um     = new UploadManager();
            HttpResult    result = um.UploadData(videoBinary, saveKey, token);

            var video = new Video
            {
                VideoUrl    = saveKey,
                MimeType    = mimeType,
                SeoFilename = seoFilename,
                IsNew       = isNew,
            };

            _videoRepository.Insert(video);

            _eventPublisher.EntityInserted(video);

            return(video);
        }
Exemple #18
0
        /// <summary>
        /// 上传指定文件到七牛云对象存储。
        /// </summary>
        /// <param name="file">待上传的文件</param>
        /// <param name="suffix">文件在云空间里的后缀</param>
        /// <exception cref="Exception"/>
        public async Task Upload(string file, string suffix)
        {
            string key = path + suffix;
            Mac    mac = new Mac(accessKey, secretKey);

            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = bucket + ":" + key;
            putPolicy.Scope = bucket;
            if (timeout.HasValue && timeout.Value > 0)
            {
                putPolicy.SetExpires(timeout.Value / 1000);
            }

            if (deleteAfterDays.HasValue && deleteAfterDays.Value > 0)
            {
                putPolicy.DeleteAfterDays = deleteAfterDays;
            }

            string        json   = putPolicy.ToJsonString();
            string        token  = Auth.CreateUploadToken(mac, json);
            UploadManager um     = new UploadManager();
            var           result = await um.UploadFileAsync(file, key, token);

            if (result.Code != 200)
            {
                throw new Exception("上传失败,服务器返回错误信息:" + result.Text);
            }
        }
Exemple #19
0
        /// <summary>
        /// 图片上传到七牛
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private static ItemResult <string> UploadQiNiu(string filename, byte[] data)
        {
            ItemResult <string> res = new ItemResult <string>();
            Mac mac = new Mac(ApplicationContext.AppSetting.QiNiu_AccessKey, ApplicationContext.AppSetting.QiNiu_SecretKey);
            // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 设置要上传的目标空间
            putPolicy.Scope = ApplicationContext.AppSetting.QiNiu_Bucket;
            // 上传策略的过期时间(单位:秒)
            putPolicy.SetExpires(3600);
            // 文件上传完毕后,在多少天后自动被删除
            putPolicy.DeleteAfterDays = 1;
            // 生成上传token
            string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

            Qiniu.Storage.Config config = new Qiniu.Storage.Config();
            // 设置上传区域
            config.Zone = Zone.ZONE_CN_East;
            // 设置 http 或者 https 上传
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            // 表单上传
            FormUploader target = new FormUploader(config);

            Qiniu.Http.HttpResult result = target.UploadData(data, filename, token, null);
            res.Data    = JsonConvert.DeserializeObject <QiniuOss>(result.Text).key;
            res.Success = true;
            return(res);
        }
        public void UploadFile(string filePath, string accessKey, string secretKey, string bucket)
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac mac = new Mac(accessKey, secretKey);

            string saveKey = filePath.Substring(filePath.LastIndexOf('/') + 1);

            // 上传策略,参见
            // https://developer.qiniu.com/kodo/manual/put-policy
            PutPolicy putPolicy = new PutPolicy();

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            putPolicy.Scope = bucket;

            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);

            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            //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(filePath, saveKey, token);

            Console.WriteLine(result);
        }
        public async Task <HttpResult> UploadStream(Stream stream, PutPolicy putPolicy, string key, PutExtra putExtra)
        {
            var token  = _auth.CreateUploadToken(putPolicy.ToJsonString());
            var result = await _formUploader.UploadStream(stream, key, token, putExtra);

            return(result);
        }
        public string UploadFile(string FileName, string BucketName = "", int Expires = 3600)
        {
            if (string.IsNullOrWhiteSpace(BucketName))
            {
                BucketName = this.Bucket;
            }
            System.IO.FileInfo file = new System.IO.FileInfo(FileName);

            string    key = file.Name;
            Mac       mac = new Mac(AccessKey, SecretKey);
            PutPolicy pp  = new PutPolicy();  //上传参数

            pp.Scope = $"{BucketName}:{key}"; //如果云端已有同名文件则覆盖,使用 SCOPE = "BUCKET:KEY"
            pp.SetExpires(Expires);
            //pp.DeleteAfterDays = 1;
            string Token  = Auth.CreateUploadToken(mac, pp.ToJsonString());
            Config config = new Config()
            {
                Zone = Zone.ZONE_CN_East,
            };
            FormUploader upload = new FormUploader(config);
            HttpResult   result = upload.UploadFile(FileName, key, Token, null);

            //result.
            return(result.ToString());
        }
Exemple #23
0
        public async Task UploadFileTest()
        {
            var mac  = new Mac(AccessKey, SecretKey);
            var rand = new Random();
            var key  = $"UploadFileTest_{rand.Next()}.dat";

            var filePath = LocalFile;

            var putPolicy = new PutPolicy
            {
                Scope           = Bucket + ":" + key,
                DeleteAfterDays = 1
            };

            putPolicy.SetExpires(3600);
            var token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());

            var config = new Config
            {
                Zone          = Zone.ZoneCnEast,
                UseHttps      = true,
                UseCdnDomains = true,
                ChunkSize     = ChunkUnit.U512K
            };
            var target = new ResumableUploader(config);
            var result = await target.UploadFile(filePath, key, token, null);

            Console.WriteLine("chunk upload result: " + result);
            Assert.Equal((int)HttpCode.OK, result.Code);
        }
Exemple #24
0
        public string GetToken()
        {
            var applicationKey = AppSettings.QiNiuConfig.ApplicationKey;
            var mac            = new Mac(applicationKey, AppSettings.QiNiuConfig.SecretKey);
            var bucket         = AppSettings.QiNiuConfig.Bucket;
            var putPolicy      = new PutPolicy {
                Scope = bucket
            };

            Config.AutoZone(applicationKey, bucket, useHTTPS: true);

            // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY"
            // putPolicy.Scope = bucket + ":" + saveKey;
            // 上传策略有效期(对应于生成的凭证的有效期)
            putPolicy.SetExpires(3600);

            // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除
            //putPolicy.DeleteAfterDays = 1;

            // 生成上传凭证,参见
            // https://developer.qiniu.com/kodo/manual/upload-token
            var jstr  = putPolicy.ToJsonString();
            var token = Auth.CreateUploadToken(mac, jstr);

            return(token);
        }
        public async Task DeleteBlob_Test(string containerName, string blobName)
        {
            var bucketsResult = qiNiuStorageProvider.BucketManager.Buckets(true);

            //由于没有提供创建空间的API,请去管理后台手动创建
            bucketsResult.Result.Contains(containerName).ShouldBe(true);

            await Assert.ThrowsAnyAsync <StorageException>(async() =>
                                                           await StorageProvider.DeleteBlob(containerName, blobName)
                                                           );

            var putPolicy = new PutPolicy
            {
                Scope = containerName
            };

            putPolicy.SetExpires(120);
            putPolicy.DeleteAfterDays = 1;

            var token = Auth.CreateUploadToken(qiNiuStorageProvider.Mac, putPolicy.ToJsonString());
            var um    = new UploadManager(qiNiuStorageProvider.Config);

            var testFilePath = Path.Combine(localPath, blobName);

            File.WriteAllText(testFilePath, GetTestContent());
            var result = um.UploadFile(testFilePath, blobName, token, new PutExtra()
            {
            });

            if (result.Code == 200)
            {
                await StorageProvider.DeleteBlob(containerName, blobName);
            }
        }
Exemple #26
0
        public override Task SaveAsync(BlobProviderSaveArgs args)
        {
            //TODO...
            var containerName = args.ContainerName;
            var blobName      = $"{args.BlobName}";

            var configurationSection = _configuration.GetSection("Qiniu");

            Mac       mac       = new Mac(configurationSection["AccessKey"], configurationSection["SecretKey"]);// AK SK使用
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = configurationSection["Bucket"];
            string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());//token生成
            Config config = new Config()
            {
                Zone     = Zone.ZONE_CN_South,
                UseHttps = true
            };
            FormUploader upload = new FormUploader(config);
            HttpResult   result = new HttpResult();

            Stream stream = args.BlobStream;

            result = upload.UploadStream(stream, blobName, token, null);
            if (result.Code != 200)
            {
                throw new Exception(result.RefText);//上传失败错误信息
            }

            return(Task.CompletedTask);
        }
Exemple #27
0
        /// <summary>
        /// 七牛上传文件
        /// </summary>
        /// <param name="filePath">文件本地路径</param>
        /// <param name="fileName">文件名称</param>
        public static int UploadFile(string filePath, string fileName)
        {
            Mac mac = new Mac(FileConfig.AccessKey, FileConfig.SecretKey);
            // 本地文件路径
            // 存储空间名
            string Bucket = FileConfig.Bucket;
            // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
            var putPolicy = new PutPolicy();

            // 设置要上传的目标空间
            putPolicy.Scope = Bucket;
            // 上传策略的过期时间(单位:秒)
            putPolicy.SetExpires(3600);
            // 文件上传完毕后,在多少天后自动被删除
            //putPolicy.DeleteAfterDays = 1;
            // 生成上传token
            string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            Config config = new Config();

            // 设置上传区域
            config.Zone = Zone.ZONE_CN_South;
            // 设置 http 或者 https 上传
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U4096K;
            // 表单上传
            FormUploader target = new FormUploader(config);
            var          result = target.UploadFile(filePath, fileName, token, null);

            return(result.Code);
        }
Exemple #28
0
        /// <summary>
        /// 上传文件到七牛云
        /// </summary>
        /// <param name="imgPath">文件路径</param>
        /// <param name="name">文件后缀名</param>
        /// <returns>服务器文件路径</returns>
        public static string UploadFile(string imgPath, string name = ".jpg")
        {
            Mac mac = new Mac("h-0RX_DYCsRy3d8NITyVejjVWDXJbVyolHgPQ5xA",
                              "gnTJ6QzZe5tVSZvTrlQLhYs0hZ-Oava2n8FcJtgs");
            // 上传文件名
            string key = string.IsNullOrEmpty(name) ? Guid.NewGuid().ToString() : Guid.NewGuid().ToString() + name;
            // 本地文件路径
            //string filePath = imgUrl;
            // 存储空间名
            string Bucket = "fyzsmanager";
            // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy
            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = Bucket;
            putPolicy.SetExpires(3600);
            putPolicy.DeleteAfterDays = 60;//60天后自动删除
            string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            Config config = new Config();

            // 设置上传区域
            config.Zone = Zone.ZONE_CN_South;
            // 设置 http 或者 https 上传
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            // 表单上传
            FormUploader target = new FormUploader(config);
            HttpResult   result = target.UploadFile(imgPath, key, token, null);

            if (result.Code == 200)
            {
                return(string.Format("http://oxdwc8csx.bkt.clouddn.com/{0}", key));
            }
            return(null);
        }
Exemple #29
0
 /// <summary>
 /// 得到上传文件策略信息
 /// </summary>
 /// <param name="opsParam">上传信息</param>
 /// <param name="func"></param>
 public string GetUploadCredentials(UploadPersistentOpsParam opsParam, Func <string> func)
 {
     SetPutPolicy(opsParam.Key, opsParam.UploadPersistentOps.IsAllowOverlap,
                  opsParam.UploadPersistentOps.PersistentOps);
     PutPolicy.CallbackBody = func?.Invoke();
     return(Auth.CreateUploadToken(Mac, PutPolicy.ToJsonString()));
 }
Exemple #30
0
        /// <summary>
        /// 上传数据流(NetStream)
        /// </summary>
        public static void uploadNetStream()
        {
            try
            {
                string url  = "http://img.ivsky.com/img/tupian/pre/201610/09/beifang_shanlin_xuejing-001.jpg";
                var    wReq = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;
                var    resp = wReq.GetResponse() as System.Net.HttpWebResponse;
                using (var stream = resp.GetResponseStream())
                {
                    Mac       mac       = new Mac(Settings.AccessKey, Settings.SecretKey);
                    PutPolicy putPolicy = new PutPolicy();
                    putPolicy.Scope = "xuejing-001.jpg";
                    putPolicy.SetExpires(3600);
                    string jstr  = putPolicy.ToJsonString();
                    string token = Auth.CreateUploadToken(mac, jstr);

                    // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)
                    // 请使用FormUploader或者ResumableUploader的UploadStream方法
                    FormUploader fu     = new FormUploader();
                    var          result = fu.UploadStream(stream, "xuejing-001.jpg", token);
                    Console.WriteLine(result);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }