公司一個項目,需要用到七牛的多文件壓縮功能,看了文檔,有點懵,網上查代碼,也沒找到C#相關的,最後提了工單,在工程師的幫助下解決了這個問題。 另外,七牛提供的最新nuget包沒有.net core的,所以這又是一個比較尷尬的事情。 現在這個是基於七牛的nuget包7.3.1.1 ...
公司一個項目,需要用到七牛的多文件壓縮功能,看了文檔,有點懵,網上查代碼,也沒找到C#相關的,最後提了工單,在工程師的幫助下解決了這個問題。
Mac mac = new Mac(AK, SK); Config config = new Config(); OperationManager operationManager = new OperationManager(mac, config); //tmpImgUrl是在七牛已經存在的圖片地址,後面是隨機的一個圖片名稱,壓縮包用的。 string fops = "mkzip/2/url/" + Base64.UrlSafeBase64Encode(tmpImgUrl) + "/alias/" + Base64.UrlSafeBase64Encode(getRandomName()); fops += "\n/url/" + Base64.UrlSafeBase64Encode(tmpImgUrl2) + "/alias/" + Base64.UrlSafeBase64Encode(getRandomName()); fops += "\n/url/" + Base64.UrlSafeBase64Encode(tmpImgUrl3) + "/alias/" + Base64.UrlSafeBase64Encode(getRandomName()); fops += "|saveas/" + Base64.UrlSafeBase64Encode(bucket + ":abc/down6.zip");//這裡abc是設定下載文件的目錄,down6是下載文件名稱 // 私有隊列名 string pipeline = null; string notifyUrl = "http://api.example.com/qiniu/pfop/notify";//這是壓縮成功的一個回調方法,我不需要使用,可以設置為空。 // 文件名 string key = "2018/07/12/1722443513";//這個比較坑,必須給一個目錄已經存在的地址,隨便給一個都行,這是pfop介面規格的強制要求 // 當服務端發現 fops 指定的數據處理結果已經存在,那就認為已經處理成功,避免重覆處理浪費資源。加上本欄位並設為 1,則可強制執行數據處理並覆蓋原結果。 bool force = true; PfopResult pfopRet = operationManager.Pfop(bucket, key, fops, pipeline, notifyUrl, force); if (pfopRet.Code != (int)HttpCode.OK)//200表示成功,否則就看報錯信息 { Console.WriteLine("pfop error: " + pfopRet.ToString()); }
另外,七牛提供的最新nuget包沒有.net core的,所以這又是一個比較尷尬的事情。
現在這個是基於七牛的nuget包7.3.1.1