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)); }
/// <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); }
/// <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); }
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); }
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); }
/// <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); }
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(); }
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"); }
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); }
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()); }
/// <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)); }
/// <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()); }
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); }
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); }
/// <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); } }
/// <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()); }
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); }
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); } }
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); }
/// <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); }
/// <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); }
/// <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())); }
/// <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); } }