예제 #1
0
 public HttpResult copy(string srcBucket, string srcKey, string destBucket, string destKey)
 {
     HttpResult copyResult = null;
     string url = string.Format("{0}{1}", Config.RS_HOST, copyOp(srcBucket, srcKey, destBucket, destKey));
     string token = Auth.createManageToken(url, null, this.mac);
     HttpManager httpManager = new HttpManager();
     httpManager.setAuthHeader(token);
     httpManager.CompletionHandler = new CompletionHandler(delegate(ResponseInfo respInfo, string response)
     {
         copyResult = new HttpResult();
         copyResult.Response = response;
         copyResult.ResponseInfo = respInfo;
     });
     httpManager.post(url);
     return copyResult;
 }
예제 #2
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);
            }
        }
예제 #3
0
 public HttpResult delete(string bucket, string key)
 {
     HttpResult deleteResult = null;
     string url = string.Format("{0}{1}", Config.RS_HOST, deleteOp(bucket, key));
     string token = Auth.createManageToken(url, null, this.mac);
     HttpManager httpManager = new HttpManager();
     httpManager.setAuthHeader(token);
     httpManager.CompletionHandler = new CompletionHandler(delegate(ResponseInfo respInfo, string response)
     {
         deleteResult = new HttpResult();
         deleteResult.Response = response;
         deleteResult.ResponseInfo = respInfo;
     });
     httpManager.post(url);
     return deleteResult;
 }
예제 #4
0
        /// <summary>
        /// 下载私有空间中的文件
        /// </summary>
        /// <param name="rawUrl">要下载的文件url</param>
        /// <param name="savePath">保存到的路径</param>
        /// <returns>文件全路径</returns>
        public static async Task <string> DownloadPrivateFileAsync(string rawUrl, string savePath)
        {
            var s = savePath.Substring(savePath.Length - 1, 1);

            if ("/".Equals(s) || "\\".Equals(s))
            {
                savePath += Path.GetFileName(rawUrl);
            }
            else
            {
                savePath += "/" + Path.GetFileName(rawUrl);
            }

            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey);

            /*string rawUrl = "http://your-bucket.bkt.clouddn.com/1.jpg";
             * string savePath = "D:\\QFL\\saved-1.jpg";*/
            // 设置下载链接有效期3600秒
            int    expireInSeconds = 3600;
            string accUrl          = DownloadManager.CreateSignedUrl(mac, rawUrl, expireInSeconds);

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

            // 接下来可以使用accUrl来下载文件
            Qiniu.Http.HttpResult result = await DownloadManager.DownloadAsync(accUrl, savePath);

            Console.WriteLine(result);
            if (result.Code == (int)HttpCode.OK)
            {
                return(savePath);
            }
            throw new Exception("下载文件出错!");
        }
예제 #5
0
        public HttpResult updateLifecycle(string bucket,string key,int deleteAfterDays)
        {
            HttpResult updateResult = null;

            string updateUrl = string.Format("{0}{1}", Config.ZONE.RsHost, updateLifecycleOp(bucket, key, deleteAfterDays));
            string accessToken = Auth.createManageToken(updateUrl, null, this.mac);
            Dictionary<string, string> updateHeaders = new Dictionary<string, string>();
            updateHeaders.Add("Authorization", accessToken);
            CompletionHandler updateCompletionHandler = new CompletionHandler(delegate (ResponseInfo respInfo, string response)
            {
                updateResult = new HttpResult();
                updateResult.Response = response;
                updateResult.ResponseInfo = respInfo;
            });

            this.mHttpManager.postForm(updateUrl, updateHeaders, null, updateCompletionHandler);
            return updateResult;
        }
예제 #6
0
        // ADD 'force' param
        // 2016-08-22 14:58 @fengyh
        public HttpResult move(string srcBucket, string srcKey, string destBucket, string destKey, bool force)
        {
            HttpResult moveResult = null;
            string moveUrl = string.Format("{0}{1}", Config.ZONE.RsHost, moveOp(srcBucket, srcKey, destBucket, destKey, force));
            string accessToken = Auth.createManageToken(moveUrl, null, this.mac);
            Dictionary<string, string> moveHeaders = new Dictionary<string, string>();
            moveHeaders.Add("Authorization", accessToken);
            CompletionHandler moveCompletionHandler = new CompletionHandler(delegate(ResponseInfo respInfo, string response)
            {
                moveResult = new HttpResult();
                moveResult.Response = response;
                moveResult.ResponseInfo = respInfo;
            });

            this.mHttpManager.postForm(moveUrl, moveHeaders, null, moveCompletionHandler);
            return moveResult;
        }
예제 #7
0
        public HttpResult delete(string bucket, string key)
        {
            HttpResult deleteResult = null;
            string deleteUrl = string.Format("{0}{1}", Config.ZONE.RsHost, deleteOp(bucket, key));
            string accessToken = Auth.createManageToken(deleteUrl, null, this.mac);
            Dictionary<string, string> deleteHeaders = new Dictionary<string, string>();
            deleteHeaders.Add("Authorization", accessToken);
            CompletionHandler deleteCompletionHandler = new CompletionHandler(delegate(ResponseInfo respInfo, string response)
            {
                deleteResult = new HttpResult();
                deleteResult.Response = response;
                deleteResult.ResponseInfo = respInfo;
            });

            this.mHttpManager.postForm(deleteUrl, deleteHeaders, null, deleteCompletionHandler);
            return deleteResult;
        }
예제 #8
0
        public HttpResult copy(string srcBucket, string srcKey, string destBucket, string destKey)
        {
            HttpResult copyResult = null;
            string copyUrl = string.Format("{0}{1}", Config.ZONE.RsHost, copyOp(srcBucket, srcKey, destBucket, destKey));
            string accessToken = Auth.createManageToken(copyUrl, null, this.mac);
            Dictionary<string, string> copyHeaders = new Dictionary<string, string>();
            copyHeaders.Add("Authorization", accessToken);
            CompletionHandler copyCompletionHandler = new CompletionHandler(delegate(ResponseInfo respInfo, string response)
            {
                copyResult = new HttpResult();
                copyResult.Response = response;
                copyResult.ResponseInfo = respInfo;
            });

            this.mHttpManager.postForm(copyUrl, copyHeaders, null, copyCompletionHandler);
            return copyResult;
        }
예제 #9
0
        public HttpResult chgm(string bucket, string key, string mimeType)
        {
            HttpResult chgmResult = null;
            string chgmUrl = string.Format("{0}{1}", Config.ZONE.RsHost, chgmOp(bucket, key, mimeType));
            string accessToken = Auth.createManageToken(chgmUrl, null, this.mac);
            Dictionary<string, string> chgmHeaders = new Dictionary<string, string>();
            chgmHeaders.Add("Authorization", accessToken);
            CompletionHandler chgmCompletionHandler = new CompletionHandler(delegate(ResponseInfo respInfo, string response)
            {
                chgmResult = new HttpResult();
                chgmResult.Response = response;
                chgmResult.ResponseInfo = respInfo;
            });

            this.mHttpManager.postForm(chgmUrl, chgmHeaders, null, chgmCompletionHandler);
            return chgmResult;
        }
예제 #10
0
        /// <summary>
        /// 上传(来自网络回复的)数据流
        /// </summary>
        public static string UpLoadStream(Stream _stream, string _saveKey)
        {
            _saveKey += ".jpg"; //保存格式
            string result_string = _QiNiuUrl + _saveKey;

            //if (Stat(_saveKey))
            //{
            //    return result_string;
            //}

            // 生成(上传)凭证时需要使用此Mac
            // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey
            // 实际应用中,请自行设置您的AccessKey和SecretKey
            Mac    mac     = new Mac(_AccessKey, _SecretKey);
            string bucket  = _bucket;
            string saveKey = _saveKey;

            // 上传策略,参见
            // 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);

            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())
                using (var stream = _stream)
                {
                    // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length)
                    // 请使用FormUploader或者ResumableUploader的UploadStream方法
                    FormUploader          fu     = new FormUploader();
                    Qiniu.Http.HttpResult result = fu.UploadStream(stream, saveKey, token);

                    //代表上传成功
                    if (result.Code.ToString().Trim() == "200")
                    {
                        return(result_string);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (Exception ex)
            {
                return(result_string);
            }
        }