/// <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); }
/// <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); }
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()); }
//断点续传 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); } }
/// <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); } }
/// <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); } }
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(); }
/// <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); }
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() : "" }); }
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(); }
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(',')); }
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(""); } }
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"); }
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(); }
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); }
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"); }
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"); }
/// <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); }
/// <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); }
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; }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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(); }
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); }