Esempio n. 1
0
        /// <summary>
        /// 删除云端图片
        /// </summary>
        /// <param name="filename">文件名称</param>
        /// <returns></returns>
        public static CloudFile Delete(string filename)
        {
            var model = new CloudFile();

            try
            {
                Mac mac = new Mac(Ak, Sk);
                // 设置存储区域
                Config.SetZone(ZoneID.CN_North, false);
                BucketManager bucketManager = new BucketManager(mac);
                // 文件名
                filename = filename.Replace(domain, "");
                HttpResult deleteRet = bucketManager.Delete(Bucket, filename);
                model.Code = deleteRet.Code;
                if (model.Code != 200)
                {
                    model.Message = deleteRet.Text;
                }
            }
            catch (Exception ex)
            {
                model.Code    = 500;
                model.Message = ex.Message;
            }
            return(model);
        }
Esempio n. 2
0
 /// <summary>
 /// 删除七牛的文件
 /// </summary>
 /// <param name="key"></param>
 public void Delete(string key)
 {
     var mac = new Mac(this.AK, this.SK);
     var bm  = new BucketManager(mac);
     // 返回结果存储在result中
     var res = bm.Delete(this.Bucket, key).ThrowIfException();
 }
        public void DeleteFile(string fileName, string accessKey, string secretKey, string bucket)
        {
            Mac           mac = new Mac(accessKey, secretKey);
            BucketManager bm  = new BucketManager(mac);

            bm.Delete(bucket, fileName);
        }
Esempio n. 4
0
        public string DeleteFile(string Name)
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac    mac      = new Mac(AppCode.AK, AppCode.SK);
            string bucket   = "allfile";
            string fileName = Name;
            string saveKey  = fileName;


            PutPolicy putPolicy = new PutPolicy();

            putPolicy.Scope = bucket + ":" + saveKey;

            putPolicy.SetExpires(3600);

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

            //先删除
            BucketManager bm     = new BucketManager(mac);
            HttpResult    result = bm.Delete(bucket, saveKey);
            string        res    = result.ToString();

            if (res.Substring(0, 8) == "code:200")
            {
                return("");
            }
            else
            {
                return(res);
            }
        }
        public bool CheckInfo(string AK, string SK, string BucketName)
        {
            string TestFileName    = "QiniuUploaderTestFile";
            string TestFilePath    = System.Environment.CurrentDirectory + "\\" + TestFileName;
            string TestFileContent = "Test";

            File.WriteAllText(TestFilePath, TestFileContent);

            Mac       mac       = new Mac(AK, SK);
            PutPolicy putPolicy = new PutPolicy
            {
                Scope = BucketName
            };
            string token  = Auth.CreateUploadToken(mac, putPolicy.ToJsonString());
            Config config = new Config
            {
                // 设置上传区域
                //Zone = Zone.ZONE_CN_East,
                // 设置 http 或者 https 上传
                UseHttps      = true,
                UseCdnDomains = true,
                ChunkSize     = ChunkUnit.U512K
            };
            FormUploader target = new FormUploader(config);
            HttpResult   result = target.UploadFile(TestFilePath, TestFileName, token, null);

            if (File.Exists(TestFilePath))
            {
                File.Delete(TestFilePath);
            }

            switch (result.RefCode)
            {
            case 200:
            {
                //delete temp file
                BucketManager bm        = new BucketManager(mac, config);
                HttpResult    deleteRet = bm.Delete(BucketName, TestFileName);

                MessageBox.Show("Information saved!", "Success:", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return(true);
            }

            case 631:
            {
                MessageBox.Show("No such Bucket!", "ERROR:", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            case 401:
            {
                MessageBox.Show("AK or SK is incorrect!", "ERROR:", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }
            }
            MessageBox.Show(result.RefText, "ERROR:", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return(false);
        }
Esempio n. 6
0
        /// <summary>
        /// 删除七牛的文件
        /// </summary>
        /// <param name="key"></param>
        public static void Delete(string key)
        {
            var mac = new Mac(AK, SK);
            var bm  = new BucketManager(mac);
            // 返回结果存储在result中
            var res = bm.Delete(bucket, key);

            res.ThrowIfException();
        }
Esempio n. 7
0
        public static async Task <bool> DeleteFile(string bucketName, string fileId)
        {
#if MOCK
            return(await Task.FromResult(true));
#else
            var bucketManager = new BucketManager(_currentMac, _config);
            var queryResult   = await Task.Factory.StartNew(() => bucketManager.Delete(bucketName, fileId));

            return(queryResult.Code == 200);
#endif
        }
Esempio n. 8
0
        /// <summary>
        /// 上传版本
        /// </summary>
        private string UploadVersion()
        {
            int dbversion = dal.ExecuteInt("Select VersionID From Version");

            string serverVersion = getVersionName();

            Mac    mac       = new Mac(AppCode.AK, AppCode.SK);
            string bucket    = "mydb";
            string saveKey   = "version" + dbversion + ".txt";
            string localFile = ServerPath + "\\" + "version" + dbversion + ".txt";  //Server.MapPath("version" + dbversion + ".txt");

            try
            {
                if (!File.Exists(localFile))
                {
                    FileStream fs = new FileStream(localFile, FileMode.Create);

                    fs.Close();
                }
            }
            catch (Exception ep)
            {
                string sqlLog = "Insert into Logs(Name,CreateDate,Type,Content) values('更新版本号-创建version.txt','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','版本控制','" + ep.Message.Filter() + "')";
                dal.ExecuteNonQuery(sqlLog);
            }

            try
            {
                PutPolicy putPolicy = new PutPolicy();
                putPolicy.Scope = bucket + ":" + saveKey;
                putPolicy.SetExpires(3600);
                string jstr  = "{\"scope\":\"" + putPolicy.Scope + "\",\"deadline\":" + putPolicy.Deadline + "}"; //putPolicy.ToJsonString();
                string token = Auth.CreateUploadToken(mac, jstr);

                UploadManager um = new UploadManager();

                //先删除
                BucketManager bm = new BucketManager(mac);
                bm.Delete(bucket, serverVersion);

                HttpResult result = um.UploadFile(localFile, saveKey, token);
                string     res    = result.ToString();

                File.Delete(localFile);

                return("Finish");
            }
            catch (Exception ep)
            {
                return(ep.Message);
            }
        }
Esempio n. 9
0
        public ResultInfo Delete(string key)
        {
            BucketManager bm = new BucketManager(mac);

            HttpResult result = bm.Delete(bucket, key);

            return(new ResultInfo
            {
                Code = result.Code == 200 ? 0 : result.Code,
                Msg = result.RefText,
                Data = result,
            });
        }
Esempio n. 10
0
        public void DeleteTest()
        {
            Mac           mac    = new Mac(AccessKey, SecretKey);
            BucketManager target = new BucketManager(mac);

            HttpResult result = target.Delete(Bucket1, FileKey1);

            bool cond = (result.Code == (int)HttpCode.OK ||
                         result.Code == (int)HttpCode.BUCKET_NOT_EXIST ||
                         result.Code == (int)HttpCode.FILE_NOT_EXIST);

            Assert.IsTrue(cond);
        }
Esempio n. 11
0
        /// <summary>
        /// 删除空间中指定文件
        /// </summary>
        public static void delete()
        {
            Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey);

            string bucket = "test";
            string key    = "1.txt";

            BucketManager bm = new BucketManager(mac);

            var result = bm.Delete(bucket, key);

            Console.WriteLine(result);
        }
Esempio n. 12
0
        /// <summary>
        /// 删除七牛文件
        /// </summary>
        /// <param name="AccessKey">密钥AK</param>
        /// <param name="SecretKey">密钥SK</param>
        /// <param name="bucket">存储空间</param>
        /// <param name="fileKey">文件名</param>
        /// <param name="zone">Cdn区域 枚举 默认华东</param>
        /// <returns></returns>
        public static HttpResult DelFile(string AccessKey, string SecretKey, string bucket, string fileKey, Zone zone = null)
        {
            Mac    mac    = new Mac(AccessKey, SecretKey);
            Config config = new Config();

            config.Zone          = (zone == null ? Zone.ZONE_CN_East : zone);
            config.UseHttps      = true;
            config.UseCdnDomains = true;
            config.ChunkSize     = ChunkUnit.U512K;
            BucketManager black = new BucketManager(mac, config);

            return(black.Delete(bucket, fileKey));
        }
Esempio n. 13
0
        public void DeleteFile(string key)
        {
            BucketManager bm     = new BucketManager(mac);
            HttpResult    result = bm.Delete(Bucket, key);

            if (result.Code != 200)
            {
                var jResult = JsonConvert.DeserializeObject <JObject>(result.Text);
                if (jResult.Properties().Any(s => s.Name == "error"))
                {
                    throw new Exception(jResult["error"].Value <string>());
                }
            }
        }
Esempio n. 14
0
        /// <summary>
        /// 删除文件
        /// </summary>
        public HttpResult DelFile(string fileName)
        {
            // 空间名
            string Bucket = SpaceName;
            // 文件名
            string        Key           = fileName;
            Mac           mac           = new Mac(AccessKey, SecretKey);
            BucketManager bucketManager = new BucketManager(mac);
            HttpResult    deleteRet     = bucketManager.Delete(Bucket, Key);

            return(deleteRet);
            //if (deleteRet.Code != (int)HttpCode.OK)
            //{
            //    Console.WriteLine("delete error: " + deleteRet.ToString());
            //}
        }
Esempio n. 15
0
        /// <summary>
        /// 删除 指定文件
        /// </summary>
        /// <param name="fileUri"></param>
        /// <returns></returns>
        public static bool DeletePrivateFile(string bucket, string fileName)
        {
            Mac           mac = new Mac(Settings.AccessKey, Settings.SecretKey);
            string        key = fileName;
            BucketManager bm  = new BucketManager(mac);

            Qiniu.Http.HttpResult delete = bm.Delete(bucket, fileName);
            if (delete.Code == (int)HttpCode.OK)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 16
0
        /// <summary>
        /// 上传库文件
        /// </summary>
        /// <returns></returns>
        private string UploadFile()
        {
            try
            {
                // 生成(上传)凭证时需要使用此Mac
                // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
                // 实际应用中,请自行设置您的AccessKey和SecretKey
                Mac    mac       = new Mac(AppCode.AK, AppCode.SK);
                string bucket    = "mydb";
                string saveKey   = "Bowtech.db";
                string localFile = MapPath; // Server.MapPath("Bowtech.db");
                                            // 上传策略,参见
                                            // 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;
                string jstr  = "{\"scope\":\"" + putPolicy.Scope + "\",\"deadline\":" + putPolicy.Deadline + "}"; //putPolicy.ToJsonString();
                string token = Auth.CreateUploadToken(mac, jstr);

                UploadManager um = new UploadManager();

                //先删除
                BucketManager bm = new BucketManager(mac);
                bm.Delete(bucket, saveKey);

                HttpResult result = um.UploadFile(localFile, saveKey, token);
                string     res    = result.ToString();
                if (res.Substring(0, 8) == "code:200")
                {
                    return("上传完成");
                }
                else
                {
                    return("上传异常");
                }
            }
            catch (Exception ep)
            {
                return(ep.Message);
            }
        }
Esempio n. 17
0
        public void DeleteTest()
        {
            Config config = new Config();

            config.Zone = Zone.ZONE_CN_East;
            Mac           mac           = new Mac(AccessKey, SecretKey);
            BucketManager bucketManager = new BucketManager(mac, config);
            string        newKey        = "qiniu-to-delete.png";

            bucketManager.Copy(Bucket, "qiniu.png", Bucket, newKey);
            HttpResult deleteRet = bucketManager.Delete(Bucket, newKey);

            if (deleteRet.Code != (int)HttpCode.OK)
            {
                Assert.Fail("delete error: " + deleteRet.ToString());
            }
        }
        public async Task DeleteTest()
        {
            var config = new Config {
                Zone = Zone.ZoneCnEast
            };
            var mac           = new Mac(AccessKey, SecretKey);
            var bucketManager = new BucketManager(mac, config);
            var newKey        = "qiniu-to-delete.png";
            await bucketManager.Copy(Bucket, "qiniu.png", Bucket, newKey);

            var deleteRet = await bucketManager.Delete(Bucket, newKey);

            if (deleteRet.Code != (int)HttpCode.OK)
            {
                Assert.True(false, "delete error: " + deleteRet);
            }
        }
Esempio n. 19
0
        /// <summary>
        /// 删除云端图片
        /// </summary>
        /// <param name="filename">文件名称</param>
        /// <returns></returns>
        public HttpResult Delete(string filename)
        {
            Mac mac = new Mac(Ak, Sk);

            // 设置存储区域
            Config.SetZone(ZoneID.CN_South, false);
            BucketManager bucketManager = new BucketManager(mac);

            // 文件名
            filename = filename.Replace(domain, "");
            HttpResult result = bucketManager.Delete(Bucket, filename);

            if (result.Code != 200)
            {
                throw new FriendlyException(result.Text);
            }
            return(result);
        }
Esempio n. 20
0
        static void Main(string[] args)
        {
            Auth   auth   = EnvUtility.EnvAuth();
            Config config = EnvUtility.EnvConfig();

            // 上传到这个 bucket
            string bucket = "umu618-docs";
            string key    = "U-1K.txt";

            // 上传前先删除
            BucketManager bm     = new BucketManager(auth, config);
            HttpResult    result = bm.Delete(bucket, key);

            Console.WriteLine("---Delete---\n{0}", result.ToString());

            // 在内存构造一个文件内容:1024 个 U
            const long dataSize = 1024;

            byte[] data = new byte[dataSize];
            for (int i = 0; i < dataSize; ++i)
            {
                data[i] = 85;
            }

            // 一个小时的超时,转为 UnixTime 毫秒数
            long   deadline  = UnixTimestamp.GetUnixTimestamp(3600) * 1000;
            string putPolicy = "{\"scope\": \"" + bucket + "\",\"deadline\": \"" + deadline + "\"}";

            Console.WriteLine("----putPolicy----\n{0}", putPolicy);

            SimpleUpload su = new SimpleUpload(auth, config);

            result = su.UploadData(data, putPolicy, key);
            Console.WriteLine("---UploadData---\n{0}", result.ToString());

            // 下面输出的 HASH 值应该一样
            if ((int)HttpStatusCode.OK == result.Code)
            {
                Console.WriteLine("UploadResult: {0}", Base64.UrlSafeBase64Decode(result.Text));
            }

            Console.WriteLine("UploadData's ETag: {0}", ETag.ComputeEtag(data));
        }
Esempio n. 21
0
        public async Task <string> DeleteFile(string fileKey)
        {
            string Msg    = "删除成功";
            Config config = new Config();

            config.Zone = Zone.ZoneCnEast;
            var           mac           = SetMac();
            BucketManager bucketManager = new BucketManager(mac, config);
            string        newKey        = "UploadFileTest_337756368.dat";
            await bucketManager.Copy(Bucket, "UploadFileTest_337756368.dat", Bucket, newKey);

            HttpResult deleteRet = await bucketManager.Delete(Bucket, newKey);

            if (deleteRet.Code != (int)HttpCode.OK)
            {
                Msg = "删除失败";
            }
            return(Msg);
        }
Esempio n. 22
0
        //上传文件
        public string UploadFile(string Path, string fileName)
        {
            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac    mac       = new Mac(AppCode.AK, AppCode.SK);
            string bucket    = "allfile";
            string saveKey   = fileName;
            string localFile = Path;
            // 上传策略,参见
            PutPolicy putPolicy = new PutPolicy();

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

            UploadManager um = new UploadManager();

            //先删除
            BucketManager bm = new BucketManager(mac);

            bm.Delete(bucket, saveKey);

            HttpResult result = um.UploadFile(localFile, saveKey, token);
            string     res    = result.ToString();

            if (res.Substring(0, 8) == "code:200")
            {
                return("");
            }
            else
            {
                res.Logs();
                return(res);
            }
        }
        public ActionResult DeleteQiNiuImage2(string key)
        {
            string[] liststr   = key.Split('/');
            string   resultstr = "";
            string   tempkey   = liststr[3].Trim();

            try
            {
                Mac           mac    = new Mac("AwGglhX2wy5BX36zbHL_5YfC--EiQFWPdE44oblq", "X7nOg3cLkpVff_ZSor2zTUTmbYeMaJWaujsXX_Yd");
                string        bucket = "test";
                BucketManager bm     = new BucketManager(mac);
                var           result = bm.Delete(bucket, tempkey);
                resultstr = result.Code.ToString();
            }
            catch (Exception ex)
            {
                resultstr = ex.ToString();
            }
            return(Json(Comm.ToJsonResult("Success", "成功"), JsonRequestBehavior.AllowGet));
        }
Esempio n. 24
0
        public ItemResult <string> OSSImageDelete(string filename)
        {
            ItemResult <string> res = new ItemResult <string>();
            Mac mac = new Mac(ApplicationContext.AppSetting.QiNiu_AccessKey, ApplicationContext.AppSetting.QiNiu_SecretKey);
            // 设置存储区域
            Config config = new Config();

            config.Zone = Zone.ZONE_CN_East;
            BucketManager bucketManager = new BucketManager(mac, config);

            Qiniu.Http.HttpResult deleteRet = bucketManager.Delete(ApplicationContext.AppSetting.QiNiu_Bucket, filename);
            if (deleteRet.Code != (int)Qiniu.Http.HttpCode.OK)
            {
                res.Message = deleteRet.ToString();
            }
            else
            {
                res.Success = true;
            }
            return(res);
        }
Esempio n. 25
0
        static void Main(string[] args)
        {
            Auth   auth   = EnvUtility.EnvAuth();
            Config config = EnvUtility.EnvConfig();

            BucketManager bm = new BucketManager(auth, config);

            // 枚举所有 Buckets
            HttpResult result = bm.Buckets();

            Console.WriteLine("---Buckets---\n{0}", result.ToString());
            if ((int)HttpStatusCode.OK == result.Code)
            {
                JObject jo      = JObject.Parse(result.Text);
                var     buckets = jo["buckets"];
                Console.WriteLine("{0} Buckets found:", buckets.Count());
                int i = 0;
                foreach (var bucket in buckets)
                {
                    // 打印 Bucket 名字
                    Console.WriteLine("{0}\t{1}", ++i, bucket["name"].ToString());
                }
            }

            // BucketManager 还有很多函数,以下示范比较粗糙,您需要自己改改!
            result = bm.BucketList("umu618-docs", 0, null, 1);
            Console.WriteLine("---BucketList---\n{0}", result.ToString());

            result = bm.BucketStat("chentemp|umu618-docs", "2017-07-01", "2017-09-01");
            Console.WriteLine("---BucketStat---\n{0}", result.ToString());

            result = bm.Stat("umu618-docs", "Go.pdf");
            Console.WriteLine("---Stat---\n{0}", result.ToString());

            string[] keys = { "Go.pdf" };
            result = bm.Prefetch("umu618-docs", keys);
            Console.WriteLine("---Prefetch---\n{0}", result.ToString());

            result = bm.ImageInfo("http://images.w.wcsapi.biz.matocloud.com/1.png");
            Console.WriteLine("---ImageInfo---\n{0}", result.ToString());

            result = bm.Exif("http://chentemp.w.wcsapi.biz.matocloud.com/IMG_1140.JPG");
            Console.WriteLine("---Exif---\n{0}", result.ToString());

            result = bm.AvInfo("http://images.w.wcsapi.biz.matocloud.com/1.mp4");
            Console.WriteLine("---AvInfo---\n{0}", result.ToString());

            result = bm.AvInfo2("http://images.w.wcsapi.biz.matocloud.com/1.mp4");
            Console.WriteLine("---AvInfo2---\n{0}", result.ToString());

            result = bm.Delete("umu618-docs", "/temp/");
            Console.WriteLine("---Delete---\n{0}", result.ToString());

            result = bm.Move("umu618-docs", "Go.pdf", "umu618-docs", "golang/Go.pdf");
            Console.WriteLine("---Move---\n{0}", result.ToString());

            result = bm.Copy("umu618-docs", "data.txt", "umu618-docs", "data.txt");
            Console.WriteLine("---Copy---\n{0}", result.ToString());

            result = bm.Decompression("umu618-docs", "各种录音程序.7z", "7z", "umu618-docs:exe", "umu618-docs:exe/UMU.list");
            Console.WriteLine("---Decompression---\n{0}", result.ToString());

            Dictionary <string, string> d = new Dictionary <string, string>();

            d.Add("umu618-docs:/", "umu618-docs:UMU.list");
            d.Add("umu618-docs:temp", "umu618-docs:temp/UMU.list");
            result = bm.Decompression("umu618-docs", "各种录音程序.7z", "7z", d);
            Console.WriteLine("---Decompression---\n{0}", result.ToString());

            result = bm.PersistentStatus("e534f75d41534f468a7efe9a51dc90ad");
            Console.WriteLine("---PersistentStatus---\n{0}", result.ToString());

            result = bm.SetDeadline("umu618-docs", "Go.pdf", -1);
            Console.WriteLine("---SetDeadline---\n{0}", result.ToString());
        }
Esempio n. 26
0
        public static HttpResult UploadStream(Stream stream, SliceUpload uploader, string policy, string file)
        {
            Auth   auth   = EnvUtility.EnvAuth();
            Config config = EnvUtility.EnvConfig();

            // 上传到这个 bucket
            string bucket = "csj-zyk";
            string key    = file;

            // 上传前先删除
            BucketManager bm     = new BucketManager(auth, config);
            HttpResult    result = bm.Delete(bucket, key);

            long dataSize = GetDataSize(stream.Length);

            byte[] data = new byte[dataSize];
            stream.Read(data, 0, data.Length);

            // 最后合成文件时的 hash
            Console.WriteLine("ETag of uploading data: {0}", ETag.ComputeEtag(data));

            // 一个小时的超时,转为 UnixTime 毫秒数
            long   deadline    = UnixTimestamp.GetUnixTimestamp(3600) * 1000;
            string putPolicy   = "{\"scope\": \"" + bucket + ":" + key + "\",\"deadline\": \"" + deadline + "\"}";
            string uploadToken = auth.CreateUploadToken(putPolicy);

            // 第一个分片不宜太大,因为可能遇到错误,上传太大是白费流量和时间!
            const long blockSize      = 4 * 1024 * 1024;
            const int  firstChunkSize = 1024;

            SliceUpload su = uploader; // new SliceUpload(auth, config);

            result = su.MakeBlock(blockSize, 0, data, 0, firstChunkSize, uploadToken);

            if ((int)HttpStatusCode.OK == result.Code)
            {
                long     blockCount = (dataSize + blockSize - 1) / blockSize;
                string[] contexts   = new string[blockCount];


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

                contexts[0] = jo["ctx"].ToString();

                // 上传第 1 个 block 剩下的数据
                result = su.Bput(contexts[0], firstChunkSize, data, firstChunkSize, (int)(blockSize - firstChunkSize), uploadToken);
                if ((int)HttpStatusCode.OK == result.Code)
                {
                    jo          = JObject.Parse(result.Text);
                    contexts[0] = jo["ctx"].ToString();

                    // 上传后续 block,每次都是一整块上传
                    for (int blockIndex = 1; blockIndex < blockCount; ++blockIndex)
                    {
                        long leftSize  = dataSize - blockSize * blockIndex;
                        int  chunkSize = (int)(leftSize > blockSize ? blockSize : leftSize);
                        result = su.MakeBlock(chunkSize, blockIndex, data, (int)(blockSize * blockIndex), chunkSize, uploadToken);
                        if ((int)HttpStatusCode.OK == result.Code)
                        {
                            jo = JObject.Parse(result.Text);
                            contexts[blockIndex] = jo["ctx"].ToString();
                        }
                        else
                        {
                            return(result);
                        }
                    }

                    // 合成文件,注意与前面打印的 ETag 对比

                    result = su.MakeFile(dataSize, key, contexts, uploadToken);
                }
            }

            return(result);
        }
Esempio n. 27
0
 /// <summary>
 /// 删除文件
 /// </summary>
 /// <param name="fileName"></param>
 /// <param name="bucketName"></param>
 public void DeleteFile(string fileName, string bucketName)
 {
     var bm = new BucketManager(_mac);
     // 返回结果存储在result中
     HttpResult result = bm.Delete(bucketName, fileName);
 }
Esempio n. 28
0
        static void Main(string[] args)
        {
            Auth   auth   = EnvUtility.EnvAuth();
            Config config = EnvUtility.EnvConfig();

            // 上传到这个 bucket
            string bucket = "umu618-docs";
            string key    = "U-6M.txt";

            // 上传前先删除
            BucketManager bm     = new BucketManager(auth, config);
            HttpResult    result = bm.Delete(bucket, key);

            Console.WriteLine("---Delete---\n{0}", result.ToString());

            // 在内存构造一个文件内容:2M 个 U,2M 个 M, 2M 个 U
            const long dataSize = 6 * 1024 * 1024;

            byte[] data = new byte[dataSize];
            int    i    = 0;

            for (; i < dataSize / 3; ++i)
            {
                data[i] = 85;
            }
            for (; i < dataSize / 3 * 2; ++i)
            {
                data[i] = 77;
            }
            for (; i < dataSize; ++i)
            {
                data[i] = 85;
            }

            // 最后合成文件时的 hash
            Console.WriteLine("ETag of uploading data: {0}", ETag.ComputeEtag(data));

            // 一个小时的超时,转为 UnixTime 毫秒数
            long   deadline  = UnixTimestamp.GetUnixTimestamp(3600) * 1000;
            string putPolicy = "{\"scope\": \"" + bucket + ":" + key + "\",\"deadline\": \"" + deadline + "\"}";

            Console.WriteLine("----putPolicy----\n{0}", putPolicy);
            string uploadToken = auth.CreateUploadToken(putPolicy);

            Console.WriteLine("----uploadToken----\n{0}", uploadToken);

            // 第一个分片不宜太大,因为可能遇到错误,上传太大是白费流量和时间!
            const long blockSize      = 4 * 1024 * 1024;
            const int  firstChunkSize = 1024;

            SliceUpload su = new SliceUpload(auth, config);

            result = su.MakeBlock(blockSize, 0, data, 0, firstChunkSize, uploadToken);
            Console.WriteLine("---MakeBlock---\n{0}", result.ToString());

            if ((int)HttpStatusCode.OK == result.Code)
            {
                long     blockCount = (dataSize + blockSize - 1) / blockSize;
                string[] contexts   = new string[blockCount];

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

                contexts[0] = jo["ctx"].ToString();

                // 上传第 1 个 block 剩下的数据
                result = su.Bput(contexts[0], firstChunkSize, data, firstChunkSize, (int)(blockSize - firstChunkSize), uploadToken);
                Console.WriteLine("---Bput---\n{0}", result.ToString());
                if ((int)HttpStatusCode.OK == result.Code)
                {
                    jo          = JObject.Parse(result.Text);
                    contexts[0] = jo["ctx"].ToString();

                    // 上传后续 block,每次都是一整块上传
                    for (int blockIndex = 1; blockIndex < blockCount; ++blockIndex)
                    {
                        long leftSize  = dataSize - blockSize * blockIndex;
                        int  chunkSize = (int)(leftSize > blockSize ? blockSize : leftSize);
                        result = su.MakeBlock(chunkSize, blockIndex, data, (int)(blockSize * blockIndex), chunkSize, uploadToken);
                        Console.WriteLine("---MakeBlock---\n{0}", result.ToString());
                        if ((int)HttpStatusCode.OK == result.Code)
                        {
                            jo = JObject.Parse(result.Text);
                            contexts[blockIndex] = jo["ctx"].ToString();
                        }
                        else
                        {
                            Console.WriteLine("----Exit with error----");
                            return;
                        }
                    }

                    // 合成文件,注意与前面打印的 ETag 对比
                    result = su.MakeFile(dataSize, key, contexts, uploadToken);
                    Console.WriteLine("---MakeFile---\n{0}", result.ToString());
                }
            }
        }