public static string UploadFile(Stream fileStream, string fileName, string AK, String SK, string bucket) { // 生成(上传)凭证时需要使用此Mac // 这个示例单独提供了一个Settings类,其中包含AccessKey和SecretKey // 实际应用中,请自行设置您的AccessKey和SecretKey Mac mac = new Mac(AK, SK); string saveKey = fileName; // 上传策略,参见 // 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) var result = fu.UploadStreamAsync(fileStream, saveKey, token); return(JsonConvert.DeserializeObject <ResultModel>(result.Result.Text).key); }
public HttpResult uploadByte(string saveKeys, byte[] data) { Config.AutoZone(AK, bucket, false); Mac mac = new Mac(AK, SK); //string saveKey = saveKeys; PutPolicy putPolicy = new PutPolicy(); // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY" putPolicy.Scope = bucket + ":" + saveKeys; //putPolicy.Scope = bucket; // 上传策略有效期(对应于生成的凭证的有效期) putPolicy.SetExpires(100000); // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除 //putPolicy.DeleteAfterDays = 100000; string jstr = putPolicy.ToJsonString(); string token = Auth.CreateUploadToken(mac, jstr); FormUploader fu = new FormUploader(); HttpResult result = fu.UploadData(data, saveKeys, token); return(result); }
/// <summary> /// 简单上传-上传字节数据 /// </summary> public void UploadData() { // 构建配置类 var config = new Config { Zone = Zone.ZONE_CN_East }; // 生成(上传)凭证时需要使用此Mac // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey // 实际应用中,请自行设置您的AccessKey和SecretKey var mac = new Mac(AccessKey, SecretKey); var bucket = Bucket; var saveKey = "1-2.jpg"; byte[] data = System.IO.File.ReadAllBytes(@"E:\src\Tdf.S01\Tdf.Resources\Pic\Scan\1-2.jpg"); // byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello World!"); // 上传策略,参见 // https://developer.qiniu.com/kodo/manual/put-policy var 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 var jstr = putPolicy.ToJsonString(); var token = Auth.CreateUploadToken(mac, jstr); FormUploader fu = new FormUploader(config); HttpResult result = fu.UploadData(data, saveKey, token, null); Console.WriteLine(result); Console.ReadLine(); }
public List <Object> UploadQiniu(IFormFile file) { var configurationSection = _configuration.GetSection("Qiniu"); //_configuration.GetValue(""); 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(); List <Object> list = new List <Object>(); if (file.Length > 0) { var _fileName = ContentDispositionHeaderValue .Parse(file.ContentDisposition) .FileName .Trim('"'); var _qiniuName = "qiniu" + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + _fileName;//重命名文件加上时间戳 Stream stream = file.OpenReadStream(); result = upload.UploadStream(stream, _qiniuName, token, null); if (result.Code == 200) { list.Add(new { fileName = _fileName, qiniuName = _qiniuName, uploadTime = DateTime.Now, Remark = "" }); } else { throw new Exception(result.RefText);//上传失败错误信息 } } return(list); }
/// <summary> /// 上传(来自网络回复的)数据流 /// </summary> public void UploadStream() { var token = QiNiuHelper.GetToken(); 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()) { // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length) // 请使用FormUploader或者ResumableUploader的UploadStream方法 var result = new FormUploader().UploadStream(stream, "xuejing-001.jpg", token); Console.WriteLine(result); } } catch (Exception ex) { Console.WriteLine(ex); } }
/// <summary> /// 上传文件流到七牛云 /// </summary> /// <param name="stream">文件流</param> /// <param name="name">后缀名</param> /// <returns></returns> public static string UploadStream(Stream stream, string name = ".jpg") { try { 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.UploadStream(stream, key, token, null); if (result.Code == 200) { return(string.Format("http://oxdwc8csx.bkt.clouddn.com/{0}", key)); } } catch (Exception ex) { throw ex; } return(null); }
// 使用FormUploader上传文件 public static void frmUploadFile() { Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey); string key = "test_FormUploaderUploadFile.png"; FormUploader target = new FormUploader(); string filePath = "F:\\test.png"; PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = Settings.Bucket; putPolicy.SetExpires(3600); putPolicy.DeleteAfterDays = 10; string token = Auth.createUploadToken(putPolicy, mac); Console.WriteLine(key); Console.WriteLine(putPolicy); Console.WriteLine(token); target.uploadFile(filePath, key, token, null, null); Console.WriteLine(); }
// 使用FormUploader上传数据 public static void frmUploadData() { Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey); FormUploader target = new FormUploader(); byte[] data = Encoding.UTF8.GetBytes("hello world"); string key = "test_FormUploaderUploadData.txt"; PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = Settings.Bucket; putPolicy.SetExpires(3600); putPolicy.DeleteAfterDays = 1; string token = Auth.createUploadToken(putPolicy, mac); Console.WriteLine(key); Console.WriteLine(putPolicy); Console.WriteLine(token); target.uploadData(data, key, token, null, null); Console.WriteLine(); }
public string UploadToQiniu(IFormFile file) { if (file.Length == 0) { throw new LinCmsException("文件为空"); } FormUploader upload = new FormUploader(new Config() { Zone = Zone.ZONE_CN_South, UseHttps = _configuration[LinConsts.Qiniu.UseHttps].ToBoolean() }); string path = _configuration["Qiniu:PrefixPath"] + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + Path.GetExtension(file.FileName); Stream stream = file.OpenReadStream(); HttpResult result = upload.UploadStream(stream, path, GetAccessToken(), null); if (result.Code != (int)HttpCode.OK) { throw new LinCmsException("上传失败"); } return(path); }
public string UploadFile(string FileName, byte[] data, string BucketName = "") { if (string.IsNullOrWhiteSpace(BucketName)) { BucketName = this.Bucket; } Mac mac = new Mac(AccessKey, SecretKey); PutPolicy pp = new PutPolicy();//上传参数 pp.Scope = $"{BucketName}:{FileName}"; pp.SetExpires(3600); //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.UploadData(data, FileName, Token, null); return(result.ToString()); }
/// <summary> /// 上传完毕后触发数据处理 /// </summary> public static void uploadWithFop() { // 生成(上传)凭证时需要使用此Mac // 这个示例单独提供了一个Settings类,其中包含AccessKey和SecretKey // 实际应用中,请自行设置您的AccessKey和SecretKey Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey); string bucket = "test"; string saveKey = "x-1.jpg"; string localFile = "D:\\QFL\\1.png"; // 如果想要将处理结果保存到SAVEAS_BUCKET空间下,文件名为SAVEAS_KEY // 可以使用savas参数 <FOPS>|saveas/<encodedUri> // 根据fop操作不同,上传完毕后云端数据处理可能需要消耗一定的处理时间 string encodedUri = Base64.UrlSafeBase64Encode(bucket + ":" + "1-r-x.jpg"); // 进行imageView2操作后将结果另存 string fops = "imageView2/0/w/200|saveas/" + encodedUri; PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = bucket; putPolicy.PersistentOps = fops; putPolicy.SetExpires(3600); putPolicy.DeleteAfterDays = 1; putPolicy.PersistentNotifyUrl = "http://xar.fengyh.cn/qiniu/upload-callback/handler.php"; // 将PutPolicy转换为JSON字符串 string jstr = putPolicy.ToJsonString(); string token = Auth.CreateUploadToken(mac, jstr); FormUploader fu = new FormUploader(); var result = fu.UploadFile(localFile, saveKey, token); Console.WriteLine(result); }
/// <summary> /// 根据文件流上传 /// </summary> /// <param name="param"></param> /// <param name="isResume">是否允许续传(续传采用非表单提交方式)</param> /// <returns></returns> public UploadResultDto UploadStream(UploadByStreamParam param, bool isResume = false) { var uploadPersistentOps = GetUploadPersistentOps(param.UploadPersistentOps); string token = GetUploadCredentials(QiNiuConfig, new UploadPersistentOpsParam(param.Key, uploadPersistentOps)); if (isResume) { ResumableUploader target = new ResumableUploader(Core.Tools.GetConfig(QiNiuConfig, uploadPersistentOps)); HttpResult result = target.UploadStream(param.Stream, param.Key, token, GetPutExtra(uploadPersistentOps)); bool res = result.Code == (int)HttpCode.OK; return(new UploadResultDto(res, result, res ? "成功" : result.ToString())); } else { FormUploader target = new FormUploader(Core.Tools.GetConfig(QiNiuConfig, uploadPersistentOps)); HttpResult result = target.UploadStream(param.Stream, param.Key, token, GetPutExtra(uploadPersistentOps)); bool res = result.Code == (int)HttpCode.OK; return(new UploadResultDto(res, result, res ? "成功" : result.ToString())); } }
public void uploadDataTest() { //Settings.load(); Settings.LoadFromFile("F:\\test.cfg"); Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey); FormUploader target = new FormUploader(); byte[] data = Encoding.UTF8.GetBytes("hello world"); string key = "test_FormUploaderUploadData.txt"; PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = Settings.Bucket; putPolicy.SetExpires(3600); putPolicy.DeleteAfterDays = 1; string token = Auth.createUploadToken(putPolicy, mac); UploadOptions uploadOptions = null; UpCompletionHandler upCompletionHandler = new UpCompletionHandler(delegate(string fileKey, ResponseInfo respInfo, string response) { Assert.AreEqual(200, respInfo.StatusCode); }); target.uploadData(data, key, token, uploadOptions, upCompletionHandler); }
/// <summary> /// 七牛云上传 {PrefixPath}/{yyyyMMddHHmmssffffff}.文件后缀 /// </summary> /// <param name="file"></param> /// <returns></returns> private string QiniuUpload(IFormFile file) { if (file.Length == 0) { throw new LinCmsException("文件为空"); } FormUploader upload = new FormUploader(new Config() { Zone = Zone.ZONE_CN_South, UseHttps = _fileStorageOption.Qiniu.UseHttps }); string path = _fileStorageOption.Qiniu.PrefixPath + "/" + DateTime.Now.ToString("yyyyMMddHHmmssffffff") + Path.GetExtension(file.FileName); using Stream stream = file.OpenReadStream(); HttpResult result = upload.UploadStream(stream, path, GetAccessToken(), null); if (result.Code != (int)HttpCode.OK) { throw new LinCmsException("上传失败"); } return(path); }
public ActionResult Edit() { var name = Request.Form["name"]; var about = Request.Form["about"]; var gid = 0; Tab_User u = null; HttpCookie authCookie = Request.Cookies["a"]; // 获取cookie if (authCookie != null) { try { FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); // 解密 var user = SerializeHelper.FromJson <Tab_User>(ticket.UserData); u = _us.GetUser(user.F_Name, user.F_Password); if (u != null) { } else { return(RedirectToAction("SignOut", "Home")); } } catch (Exception ex) { return(RedirectToAction("SignOut", "Home")); } } var gzh = _gzhs.GetGZH(u.F_Id); if (gzh != null) { gid = gzh.F_Id; } if (gid == 0) { // IE浏览器对非ajax请求Content-Type:是json的不友好所以使用View而非Json return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "账号没有关联公众号" })); } if (name != null && name.Length > 200) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "公号名称长度必须小于200字符" })); } if (about != null && about.Length > 4000) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "公号简介长度必须小于4000字符" })); } var logo = ""; if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0 && new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower()))) { var key = QN.GZHLogo(gid); var token = QN.GetUploadToken(QN.BUCKET, key); FormUploader fu = new FormUploader(); HttpResult result = fu.UploadStream(Request.Files[0].InputStream, key, token); if (result.Code == 200) { logo = key; } } Tab_GongZhongHao g = new Tab_GongZhongHao(); g.F_About = (about != null && about.Length > 0) ? about : null; g.F_Logo = logo != "" ? logo : null; g.F_Id = gid; var i = _gzhs.UpdateGZHInfo(g); if (i == 1) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.OK, message = "成功" })); } else { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "失败" })); } }
public bool UploadStream(Stream stream, string fileName, out string address) { address = ""; if (stream == null) { return(false); } if (string.IsNullOrWhiteSpace(fileName)) { return(false); } try { var extensionName = fileName.Substring(fileName.LastIndexOf(".")); if (!_imageExtensions.Contains(extensionName.ToLower())) { return(false); } var generateFileName = $"{DateTime.Now.ToString("yyyyMMddHHmmssfff-")}{Guid.NewGuid().GetHashCode().ToString().Replace("-", string.Empty)}{extensionName}"; var saveKey = $"default/{generateFileName}"; // 生成(上传)凭证时需要使用此Mac // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey // 实际应用中,请自行设置您的AccessKey和SecretKey Mac mac = new Mac(QiniuImgBiz.AccessKey, QiniuImgBiz.SecretKey); // 上传策略,参见 // https://developer.qiniu.com/kodo/manual/put-policy PutPolicy putPolicy = new PutPolicy(); // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY" // putPolicy.Scope = bucket + ":" + saveKey; putPolicy.Scope = DefaultBucket; // 上传策略有效期(对应于生成的凭证的有效期) 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(); var result = fu.UploadStream(stream, saveKey, token); if (result.Code == 200) { address = ImageUrlPrefix + saveKey; return(true); } return(false); } catch (Exception ex) { _logger.Error(ex); return(false); } }
public ActionResult InfoEdit() { var id = Request.Form["id"]; var about = Request.Form["about"]; var gid = 0; if (!int.TryParse(id, out gid) || gid == 0) { // IE浏览器对非ajax请求Content-Type:是json的不友好所以使用View而非Json return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "公号不存在" })); } if (about != null && about.Length > 4000) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "公号简介长度必须小于4000字符" })); } var logo = ""; if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0 && new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower()))) { var key = QN.GZHLogo(gid); var token = QN.GetUploadToken(QN.BUCKET, key); FormUploader fu = new FormUploader(); HttpResult result = fu.UploadStream(Request.Files[0].InputStream, key, token); if (result.Code == 200) { logo = key; } } Tab_GongZhongHao g = new Tab_GongZhongHao(); g.F_About = (about != null && about.Length > 0) ? about : null; g.F_Logo = logo != "" ? logo : null; g.F_Id = gid; var i = _gzhs.UpdateGZHInfo(g); if (i == 1) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.OK, message = "成功" })); } else { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "失败" })); } }
public void SendReport() { string currentFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); string tempFolder = Path.GetTempPath(); string tempWatsonFolder = Path.Combine(tempFolder, WatsonName); Mac mac = new Mac("Zj7BFGPSGlDdbB2FDjT8patg5R9DBs_C6kMv_bRe", "YSQCj_M0sIrhcnuvQd7lvr50roOdbXE30ZSgTAsd"); PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = "watsondump-xdaggerminer"; string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); Config config = new Config(); config.Zone = Zone.ZONE_CN_East; config.MaxRetryTimes = 3; try { if (!Directory.Exists(tempWatsonFolder)) { Directory.CreateDirectory(tempWatsonFolder); } } catch (Exception) { } CopyFileNoThrow(currentFolder, tempWatsonFolder, "manager-config.json"); CopyFileNoThrow(currentFolder, tempWatsonFolder, "manager-info.json"); CopyFileNoThrow(currentFolder, tempWatsonFolder, "Manager-Trace.log"); if (!string.IsNullOrWhiteSpace(this.Description)) { try { using (StreamWriter sw = new StreamWriter(Path.Combine(tempWatsonFolder, "description.txt"))) { sw.WriteLine(this.Description); } } catch (Exception) { } } string dumpFileFullPath = Path.Combine(tempFolder, WatsonName + ".zip"); try { ZipFile.CreateFromDirectory(tempWatsonFolder, dumpFileFullPath, CompressionLevel.Fastest, true); } catch (Exception ex) { throw new InvalidOperationException("Error while packing dump file.", ex); } try { FormUploader target = new FormUploader(config); HttpResult result = target.UploadFile(dumpFileFullPath, WatsonName + ".zip", token, null); if (result.Code == 200) { // Success } else { throw new HttpException("UploadFile to Qiniu failed. Code=" + result.Code); } } catch (Exception ex) { throw new HttpException("UploadFile to Qiniu failed.", ex); } }
public ActionResult Upload() { //List<string> fileNames = new List<string>(); List <ImgInfo> fileList = new List <ImgInfo>(); var files = Request.Files; //["Img"] for (int i = 0; i < files.Count; i++) { var file = files[i]; if (file == null) { return(Json(new { state = false, msg = "图片不存在,请重新上传" })); } byte[] bytes = Common.StreamToBytes(file.InputStream); var fileExtension = FileHelper.CheckTextFile(bytes); if (fileExtension == FileExtension.VALIDFILE) { return(Json(new { state = false, msg = "上传的文件已损坏" })); } if (!(fileExtension == FileExtension.WEBP || fileExtension == FileExtension.GIF || fileExtension == FileExtension.JPG || fileExtension == FileExtension.PNG)) { return(Json(new { state = false, msg = "上传的类型有误" })); } //DateTime dt = DateTime.Now; Random random = new Random(); int randomNum = random.Next(0, 99999); var extension = Path.GetExtension(file.FileName); var newFileName = Guid.NewGuid().ToString("N") + randomNum.ToString() + extension; var imgType = Request["imgType"]; string upLoadPath; if (WebConstants.ImgPathDicts.ContainsKey(imgType)) { upLoadPath = WebConstants.ImgPathDicts[imgType]; } else { return(Json(new { state = false })); } string fullPath = upLoadPath + newFileName; file.SaveAs(Server.MapPath(fullPath)); //将图片上传到云服务器(七牛云) Mac mac = new Mac(ConfigurationManager.AppSettings["AccessKey"], ConfigurationManager.AppSettings["SecretKey"]); PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = ConfigurationManager.AppSettings["Bucket"]; string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); Config config = new Config(); // 空间对应的机房 config.Zone = Zone.ZONE_CN_North; // 是否使用https域名 config.UseHttps = false; // 上传是否使用cdn加速 config.UseCdnDomains = true; FormUploader fu = new FormUploader(config); HttpResult result = fu.UploadData(bytes, fullPath, token, null); ImgInfo imgInfo = new ImgInfo() { Url = "http://localhost:50069/" + fullPath, CloudUrl = "http://shop.statics.hklvia.top/" + fullPath }; fileList.Add(imgInfo); } return(Json(fileList)); }
public async Task <IActionResult> QiniuUpload() { var applicationUser = await _userManager.GetUserAsync(new System.Security.Claims.ClaimsPrincipal(User.Identity)); if (applicationUser == null || string.IsNullOrEmpty(applicationUser.OrganizationId)) { return(RedirectToAction("Login", "Account")); } var files = Request.Form.Files; long size = files.Sum(f => f.Length); //size > 20MB refuse upload ! if (size > 2048000) { return(Json(new { errno = 3, data = new string[] { } })); } var result = new List <ImageModel>(); foreach (var file in files) { var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); string suffix = fileName.Split('.')[1]; if (!pictureFormatArray.Contains(suffix)) { //图片格式不对,必须为"png", "jpg", "jpeg", "bmp", "gif", "ico", "PNG", "JPG", "JPEG", "BMP", "GIF", "ICO" return(Json(new { errno = 4, data = new string[] { } })); } var stream = file.OpenReadStream(); byte[] imgArr = new byte[stream.Length]; stream.Position = 0; stream.Read(imgArr, 0, (int)stream.Length); stream.Close(); var imgBase64Content = Convert.ToBase64String(imgArr); var img = new ImageModel { CreatedBy = applicationUser.Id, Description = string.Empty, Title = string.Empty, ImageBase64Content = "",//imgBase64Content, ClientFileName = fileName.Split('.')[0] }; byte[] imageBytes = Convert.FromBase64String(imgBase64Content); var filePath = Base64StringToImage(imageBytes, ""); var accessKey = "72vGWO8zK9EqGIK_-qUFRjG1JIogApCV13ls57Dv"; var secretKey = "iuxEsdQovi7ltkYpBIMcF8-Q7arXS8S0zUP8-Wzx"; var bucket = "gooioscook"; var mac = new Mac(accessKey, secretKey); string sfx = fileName.Split('.')[fileName.Split('.').Length - 1]; string name = Guid.NewGuid().ToString().Replace("-", ""); string key = $"cookapp_{name}.{sfx}"; PutPolicy putPolicy = new PutPolicy(); putPolicy.Scope = bucket + ":" + key; var uploadToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); var config = new Config(); config.Zone = Zone.ZoneCnEast; config.UseHttps = true; config.UseCdnDomains = true; config.ChunkSize = ChunkUnit.U512K; var target = new FormUploader(config); var upload_token = uploadToken; HttpResult updresult = target.UploadFile(filePath, key, upload_token, null).ConfigureAwait(false).GetAwaiter().GetResult(); img.HttpPath = $"https://resources.arcanestars.com/{key}"; var imgApiUrl = "https://imageservice.gooios.com/api/image/v1"; var jsonObj = JsonConvert.SerializeObject(img); var res = await HttpRequestHelper.PostAsync <ImageModel>(imgApiUrl, jsonObj, "63e960bff18111e799160126c7e9f004", applicationUser.Id); res.ClientFileName = img.ClientFileName; res.HttpPath = img.HttpPath; result.Add(res); } return(Json(new { errno = 0, data = result.ToArray() })); }
/// <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); } }
public void ProcessRequest(HttpContext context) { //获取虚拟目录的物理路径。 UpFileResult upFileResult = new UpFileResult(); //string imgurls = ""; //BLL.Common.Logger.Info("Count:" + context.Request.Files.Count); //foreach (HttpPostedFile file in context.Request.Files) //{ HttpPostedFile file = context.Request.Files[0]; string fileName = file.FileName; string ser = context.Request.FilePath; Settings.AccessKey = "2qvZqxY40jmIKg5eLip0NCNd0pV4H3PDcPYuDA5M"; //设置SK Settings.SecretKey = "9E7vAfkreDnXuhgfkW_OoeX5DY-bMzIVBPhv7Buo"; try { Mac mac = new Mac(Settings.AccessKey, Settings.SecretKey); string suffixsl = fileName.Substring(fileName.LastIndexOf(".") + 1).ToLower(); Random rd = new Random(); string newName = Guid.NewGuid().ToString(); //string saveKey = "qiniu" +rd.Next(100,999)+ DateTime.Now.ToString("yyyyMMddHHmmss") + "." + suffixsl; string saveKey = "qiniu" + rd.Next(100, 999) + newName + "." + suffixsl; BLL.Common.Logger.Info("saveKey:" + saveKey); //string allName = AppDomain.CurrentDomain.BaseDirectory + "/upload/" + newfileName + "." + suffixsl; //file.SaveAs(allName); string allName = "/UploadQiNiuFiles/" + saveKey; file.SaveAs(System.Web.HttpContext.Current.Server.MapPath(allName)); // 本地文件路径 string filePath = fileName; filePath = System.Web.HttpContext.Current.Server.MapPath("/UploadQiNiuFiles/" + saveKey); BLL.Common.Logger.Info("filePath:" + filePath); // filePath = "D:\\POS.jpg"; // 存储空间名 string Bucket = "pic-set"; // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy PutPolicy putPolicy = new PutPolicy(); // 设置要上传的目标空间 putPolicy.Scope = Bucket; // 上传策略的过期时间(单位:秒) putPolicy.SetExpires(3600); //// 文件上传完毕后,在多少天后自动被删除 //putPolicy.DeleteAfterDays = 1; // 生成上传token string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); BLL.Common.Logger.Info("token:" + token); Config config = new Config(); // 设置上传区域 config.Zone = Zone.ZONE_CN_East; // 设置 http 或者 https 上传 config.UseHttps = true; config.UseCdnDomains = true; config.ChunkSize = ChunkUnit.U512K; // 表单上传 FormUploader target = new FormUploader(config); HttpResult result = target.UploadFile(filePath, saveKey, token, null); BLL.Common.Logger.Info("QiQiuUpFile,result.Code:" + result.Code); BLL.Common.Logger.Info("imgUrRL + saveKey01:" + imgUrRL + saveKey); if (result.Code == 200) { upFileResult.FileName = saveKey; upFileResult.imgAllUrl = imgUrRL + saveKey; upFileResult.Result = true; upFileResult.ErrorMessage = "上传成功"; } else { upFileResult.Result = false; upFileResult.ErrorMessage = "上传失败请稍后重试!"; } BLL.Common.Logger.Info("imgUrRL + saveKey:" + imgUrRL + saveKey); BLL.Common.Logger.Info("upFileResult:" + new JavaScriptSerializer().Serialize(upFileResult)); DeleteFile(filePath); //context.Response.Write(new JavaScriptSerializer().Serialize(upFileResult)); string imgurl = imgUrRL + saveKey; //imgurls += imgurl + ","; context.Response.Write(imgurl); } catch (Exception ex) { upFileResult.Result = false; upFileResult.ErrorMessage = ex.Message; BLL.Common.Logger.Info("ex.Message:" + ex.Message); BLL.Common.Logger.Info("ex:" + ex); } //} //context.Response.Write(imgurls); }
public void uploadFile(object obj) { FileItem item = obj as FileItem; if (syncProgressPage.checkCancelSignal() && item.Length > syncSetting.ChunkUploadThreshold) { this.doneEvent.Set(); return; } string fileFullPath = item.LocalFile; if (!File.Exists(fileFullPath)) { Log.Error(string.Format("file not found error, {0}", fileFullPath)); this.doneEvent.Set(); return; } //set upload params int putThreshold = this.syncSetting.ChunkUploadThreshold; int chunkSize = this.syncSetting.DefaultChunkSize; bool uploadFromCDN = this.syncSetting.UploadFromCDN; string myDocPath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); string recordPath = System.IO.Path.Combine(myDocPath, "qsunsync", "resume"); if (!Directory.Exists(recordPath)) { Directory.CreateDirectory(recordPath); } Mac mac = new Mac(SystemConfig.ACCESS_KEY, SystemConfig.SECRET_KEY); //current file info FileInfo fileInfo = new FileInfo(fileFullPath); long fileLength = fileInfo.Length; string fileLastModified = fileInfo.LastWriteTimeUtc.ToFileTime().ToString(); //support resume upload string recorderKey = string.Format("{0}:{1}:{2}:{3}:{4}", this.syncSetting.LocalDirectory, this.syncSetting.TargetBucket, item.SaveKey, fileFullPath, fileLastModified); recorderKey = Hashing.CalcMD5X(recorderKey); this.syncProgressPage.updateUploadLog("准备上传文件 " + fileFullPath); PutPolicy putPolicy = new PutPolicy(); if (this.syncSetting.OverwriteDuplicate) { putPolicy.Scope = this.syncSetting.TargetBucket + ":" + item.SaveKey; } else { putPolicy.Scope = this.syncSetting.TargetBucket; } putPolicy.SetExpires(24 * 30 * 3600); string uptoken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); this.syncProgressPage.updateUploadLog("开始上传文件 " + fileFullPath); HttpResult result = null; ChunkUnit cu = (ChunkUnit)(chunkSize / (128 * 1024)); if (item.Length > putThreshold) { ResumableUploader ru = new ResumableUploader(uploadFromCDN, cu); string recordFile = System.IO.Path.Combine(recordPath, Hashing.CalcMD5X(fileFullPath)); UploadProgressHandler upph = new UploadProgressHandler(delegate(long uploaded, long total) { this.syncProgressPage.updateSingleFileProgress(taskId, fileFullPath, item.SaveKey, uploaded, fileLength); }); result = ru.UploadFile(fileFullPath, item.SaveKey, uptoken, recordFile, upph, upController); } else { FormUploader su = new FormUploader(uploadFromCDN); result = su.UploadFile(fileFullPath, item.SaveKey, uptoken); } if (result.Code == (int)HttpCode.OK) { item.Uploaded = true; this.syncProgressPage.updateUploadLog("上传成功 " + fileFullPath); this.syncProgressPage.addFileUploadSuccessLog(string.Format("{0}\t{1}\t{2}", this.syncSetting.TargetBucket, fileFullPath, item.SaveKey)); this.syncProgressPage.updateTotalUploadProgress(); } else { item.Uploaded = false; this.syncProgressPage.updateUploadLog("上传失败 " + fileFullPath + "," + result.Text); this.syncProgressPage.addFileUploadErrorLog(string.Format("{0}\t{1}\t{2}\t{3}", this.syncSetting.TargetBucket, fileFullPath, item.SaveKey, result.Text)); } this.doneEvent.Set(); }
public async Task <IActionResult> Upload([FromServices] IHostingEnvironment environment, IFormCollection formCollection, [FromForm] FileUploadModel uploadModel) { var response = new ResponseModel(); foreach (var formFile in formCollection.Files) { uploadModel.ContentType = formFile.ContentType.Replace("\\", "").Replace("/", ""); //创建文件名称 //string fileName = $"{DescHelper.DescEncrypt($"{JsonHelper.Json(uploadModel)}")}" + // $"{Path.GetExtension(formFile.FileName)}"; string fileName = $"{Guid.NewGuid().ToString()}" + $"{Path.GetExtension(formFile.FileName)}"; //七牛云存储 if (uploadModel.StorageMethod.Equals("qiniuyun"))//七牛云存储 { var stream = formFile.OpenReadStream(); byte[] data = new byte[stream.Length]; await stream.ReadAsync(data, 0, data.Length); Mac mac = new Mac(_configuration.Value.AccessKey, _configuration.Value.SecretKey); //设置使用七牛云空间 string bucket = uploadModel.FileSpaceType.Equals("public") ? [email protected](',')[0] : [email protected](',')[0]; // 上传策略,参见 // https://developer.qiniu.com/kodo/manual/put-policy PutPolicy putPolicy = new PutPolicy(); // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY" putPolicy.Scope = bucket + ":" + fileName; // 上传策略有效期(对应于生成的凭证的有效期) putPolicy.SetExpires(3600); putPolicy.ReturnBody = "$(key)"; // 上传到云端多少天后自动删除该文件,如果不设置(即保持默认默认)则不删除 //putPolicy.DeleteAfterDays = 1; // 生成上传凭证,参见 // https://developer.qiniu.com/kodo/manual/upload-token string jstr = putPolicy.ToJsonString(); string token = Auth.CreateUploadToken(mac, jstr); Config.AutoZone(mac.AccessKey, bucket, false); FormUploader fu = new FormUploader(); HttpResult result = await fu.UploadDataAsync(data, fileName, token); if (result.Code == 200) { response.RetMsg = "文件上传成功"; response.RetCode = StatesCode.success; response.Data = new { FileAddress = $"{[email protected](',')[1]}/{result.Text.Replace("\"", "")}" };//文件地址 } } //服务器本地存储 else if (uploadModel.StorageMethod.Equals("bendi")) { var filePath = $@"{environment.ContentRootPath}\Upload\{uploadModel.ContentType}"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } using (var stream = new FileStream(Path.Combine(filePath, fileName), FileMode.CreateNew)) { await formFile.CopyToAsync(stream); } response.RetMsg = "文件上传成功"; response.RetCode = StatesCode.success; response.Data = new { FileAddress = new StringBuilder() .Append(Request.Scheme) .Append("://") .Append(Request.Host) .Append($"/{uploadModel.ContentType}/") .ToString() + fileName };//文件地址 } } return(Ok(response)); }
public ActionResult Edit() { var name = Request.Form["name"]; var id1 = Request.Form["gid"]; var id2 = Request.Form["id"]; var about = Request.Form["about"]; if (name == null || name.Length < 1 || name.Length > 50) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "长度必须大于1个字符小于50字符" })); } var gid = 0; if (!int.TryParse(id1, out gid) || gid == 0) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "公众号不存在" })); } var id = 0; if (!int.TryParse(id2, out id) || id == 0) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "漫画不存在" })); } if (about == null || about.Length > 2000) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "漫画简介必须小于2000字符" })); } var logo = ""; if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0 && new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower()))) { var key = QN.MHLogo(gid, id); var token = QN.GetUploadToken(QN.BUCKET, key); FormUploader fu = new FormUploader(); HttpResult result = fu.UploadStream(Request.Files[0].InputStream, key, token); if (result.Code == 200) { logo = key; } } Tab_MHCatalog m = new Tab_MHCatalog(); m.F_Catalog = name; m.F_GZHId = gid; m.F_Logo = logo != "" ? logo : null; m.F_Id = id; m.F_About = about; int i = _ms.UpdateMH(m); if (i == 1) { return(View(new DWZJson { statusCode = (int)DWZStatusCode.OK, message = "成功" })); } else { return(View(new DWZJson { statusCode = (int)DWZStatusCode.ERROR, message = "失败" })); } }
public string QiniuUplodtest() { var accessKey = "HNXvIcHqurHJAEDnVI4v2_qDGDvVlAXhipa6uVX-"; var secretKey = "pQOAZutqyXr679mnDclCnIeaHgF0w3U-eWDFZJsp"; // 生成(上传)凭证时需要使用此Mac // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey // 实际应用中,请自行设置您的AccessKey和SecretKey Mac mac = new Mac(accessKey, secretKey); string bucket = "siyouku"; string saveKey = "$(etag)"; // 使用前请确保AK和BUCKET正确,否则此函数会抛出异常(比如code612/631等错误) Qiniu.Common.Config.AutoZone(accessKey, bucket, false); // 上传策略,参见 // https://developer.qiniu.com/kodo/manual/put-policy PutPolicy putPolicy = new PutPolicy(); // 如果需要设置为"覆盖"上传(如果云端已有同名文件则覆盖),请使用 SCOPE = "BUCKET:KEY" // putPolicy.Scope = bucket + ":" + saveKey; putPolicy.Scope = bucket; putPolicy.SaveKey = 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); try { string url = "http://images2015.cnblogs.com/blog/208266/201509/208266-20150913215146559-472190696.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()) { //MemoryStream destination = new MemoryStream(); //stream.CopyTo(destination); //var md5Val = destination.GetStreamMd5(); // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length) // 请使用FormUploader或者ResumableUploader的UploadStream方法 FormUploader fu = new FormUploader(); var result = fu.UploadStream(stream, null, token); // Console.WriteLine(result); } } catch (Exception ex) { // Console.WriteLine(ex); } return("ok"); }
public ActionResult Add() { var id = Request.Form["mhid"]; var sort = Request.Form["sort"]; // 章节ID var name = Request.Form["name"]; var gid = 0; Tab_User u = null; HttpCookie authCookie = Request.Cookies["a"]; // 获取cookie if (authCookie != null) { try { FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); // 解密 var user = SerializeHelper.FromJson <Tab_User>(ticket.UserData); u = _us.GetUser(user.F_Name, user.F_Password); if (u != null) { } else { return(RedirectToAction("SignOut", "Home")); } } catch (Exception ex) { return(RedirectToAction("SignOut", "Home")); } } var gzh = _gzhs.GetGZH(u.F_Id); if (gzh != null) { gid = gzh.F_Id; } if (gid == 0) { // IE浏览器对非ajax请求Content-Type:是json的不友好所以使用View而非Json return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "账号没有关联公众号" })); } int mhid = 0; if (id == null || !int.TryParse(id, out mhid) || mhid == 0) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "漫画ID无效" })); } int zjid = 0; if (sort == null || !int.TryParse(sort, out zjid) || zjid == 0) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "章节ID无效" })); } if (name == null || name.Length > 50) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "章节名称长度必须小于50字符" })); } var img = ""; if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0 && new string[] { ".gif", ".jpeg", ".jpg", ".png" }.Contains(System.IO.Path.GetExtension(Request.Files[0].FileName.ToLower()))) { var key = QN.MHimg(gid, mhid); var token = QN.GetUploadToken(QN.BUCKET, key); FormUploader fu = new FormUploader(); HttpResult result = fu.UploadStream(Request.Files[0].InputStream, key, token); if (result.Code == 200) { img = key; } } else { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "请为章节内容添加图片" })); } Tab_MHImg m = new Tab_MHImg(); m.F_Name = name; m.F_Img = img != "" ? img : null; m.F_MHId = mhid; m.F_Sort = zjid; m.F_UserId = u.F_Id; var i = _mhs.AddImg(m); if (i == 1) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.OK, message = "成功" })); } else if (i == 2) { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "章节重复" })); } else { return(View(new DWZJson() { statusCode = (int)DWZStatusCode.ERROR, message = "失败" })); } }
public override void Process() { byte[] uploadFileBytes = null; string uploadFileName = null; if (UploadConfig.Base64) { uploadFileName = UploadConfig.Base64Filename; uploadFileBytes = Convert.FromBase64String(Request[UploadConfig.UploadFieldName]); } else { var file = Request.Files[UploadConfig.UploadFieldName]; uploadFileName = file.FileName; if (!CheckFileType(uploadFileName)) { Result.State = UploadState.TypeNotAllow; WriteResult(); return; } if (!CheckFileSize(file.ContentLength)) { Result.State = UploadState.SizeLimitExceed; WriteResult(); return; } uploadFileBytes = new byte[file.ContentLength]; try { file.InputStream.Read(uploadFileBytes, 0, file.ContentLength); } catch (Exception) { Result.State = UploadState.NetworkError; WriteResult(); } } Result.OriginFileName = uploadFileName; //var savePath = PathFormatter.Format(uploadFileName, UploadConfig.PathFormat); //var localPath = Server.MapPath(savePath); //try //{ // if (!Directory.Exists(Path.GetDirectoryName(localPath))) // { // Directory.CreateDirectory(Path.GetDirectoryName(localPath)); // } // File.WriteAllBytes(localPath, uploadFileBytes); // Result.Url = savePath; // Result.State = UploadState.Success; //} //catch (Exception e) //{ // Result.State = UploadState.FileAccessError; // Result.ErrorMessage = e.Message; //} //finally //{ // WriteResult(); //} try { string AccessKey = "nDdaH3SGk5NXCyQ8eZMsnRTApJndj0fOKy_f6Lix"; string SecretKey = "HgxcM58TEplyx6H9CBJTbYDqpF4uXAKsiBp-W6u4"; Mac mac = new Mac(AccessKey, SecretKey); // 上传文件名 string key = DateTime.Now.ToString("yyyy/MM/dd") + "/" + CommonHelper.CalcMd5(uploadFileBytes) + Path.GetExtension(uploadFileName); // 存储空间名 string Bucket = "renthouse2019"; // 设置上传策略,详见:https://developer.qiniu.com/kodo/manual/1206/put-policy PutPolicy putPolicy = new PutPolicy(); // 设置要上传的目标空间 putPolicy.Scope = Bucket; // 上传策略的过期时间(单位:秒) putPolicy.SetExpires(3600); // 文件上传完毕后,在多少天后自动被删除 putPolicy.DeleteAfterDays = 1; // 生成上传token string token = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); Qiniu.Storage.Config qiniuConfig = new Qiniu.Storage.Config(); // 设置上传区域 qiniuConfig.Zone = Zone.ZONE_CN_South; // 设置 http 或者 https 上传 qiniuConfig.UseHttps = true; qiniuConfig.UseCdnDomains = true; qiniuConfig.ChunkSize = ChunkUnit.U512K; // 表单上传 FormUploader target = new FormUploader(qiniuConfig); HttpResult result = target.UploadData(uploadFileBytes, key, token, null); Result.Url = key; Result.State = UploadState.Success; } catch (Exception e) { Result.State = UploadState.FileAccessError; Result.ErrorMessage = e.Message; } finally { WriteResult(); } }
public override void Process() { byte[] uploadFileBytes = null; string uploadFileName = null; var accessKey = "HNXvIcHqurHJAEDnVI4v2_qDGDvVlAXhipa6uVX-"; var secretKey = "pQOAZutqyXr679mnDclCnIeaHgF0w3U-eWDFZJsp"; HttpPostedFile file = Request.Files[UploadConfig.UploadFieldName]; Stream myStream = file.InputStream; uploadFileName = file.FileName; var fileLen = file.ContentLength; //// 读取文件的 byte[] byte[] bytes = new byte[fileLen]; // var temps= myStream.Read(bytes, 0, fileLen); if (!CheckFileType(uploadFileName)) { Result.State = UploadState.TypeNotAllow; WriteResult(); return; } if (!CheckFileSize(file.ContentLength)) { Result.State = UploadState.SizeLimitExceed; WriteResult(); return; } var md5value = Md5With32(bytes); if (_pictureRepository.Exist(md5value)) { Result.Url = _pictureRepository.GetBymd5(md5value).ImgName; Result.State = UploadState.Success; WriteResult(); return; } var maxid = _pictureRepository.GetMaxId(); var imgname = "img" + (maxid + 1) + ".jpg"; _pictureRepository.AddImg(new Picture() { ImgName = imgname, CreateUser = "******", CreateTime = DateTime.Now, Md5Value = md5value }); // 生成(上传)凭证时需要使用此Mac // 这个示例单独使用了一个Settings类,其中包含AccessKey和SecretKey // 实际应用中,请自行设置您的AccessKey和SecretKey Mac mac = new Mac(accessKey, secretKey); string bucket = "siyouku"; //string saveKey = uploadFileName; string saveKey = imgname; // 使用前请确保AK和BUCKET正确,否则此函数会抛出异常(比如code612/631等错误) Qiniu.Common.Config.AutoZone(accessKey, bucket, 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); try { // 请不要使用UploadManager的UploadStream方法,因为此流不支持查找(无法获取Stream.Length) // 请使用FormUploader或者ResumableUploader的UploadStream方法 FormUploader fu = new FormUploader(); var result = fu.UploadStream(myStream, saveKey, token); var x = Newtonsoft.Json.JsonConvert.DeserializeObject <QiniuResult>(result.Text); Result.Url = x.key; Result.State = UploadState.Success; } catch (Exception e) { Result.State = UploadState.FileAccessError; Result.ErrorMessage = e.Message; } finally { WriteResult(); } }
public string Upload(Stream stream, string fileName) { StringBuilder sbAK = new StringBuilder(60); iniFileHelper.GetIniString("qiniu", "AK", "", sbAK, sbAK.Capacity); StringBuilder sbSK = new StringBuilder(60); iniFileHelper.GetIniString("qiniu", "SK", "", sbSK, sbSK.Capacity); Mac mac = new Mac(sbAK.ToString(), sbSK.ToString()); Auth auth = new Auth(mac); StringBuilder sbZone = new StringBuilder(60); iniFileHelper.GetIniString("qiniu", "Zone", "", sbZone, sbZone.Capacity); // 目标空间名 string bucket = sbZone.ToString(); // 上传策略 PutPolicy putPolicy = new PutPolicy(); // 设置要上传的目标空间 putPolicy.Scope = bucket; // 上传策略的过期时间(单位:秒) putPolicy.SetExpires(3600); // 文件上传完毕后,1天后自动删除 putPolicy.DeleteAfterDays = 1; // 生成上传凭证 string uploadToken = Auth.CreateUploadToken(mac, putPolicy.ToJsonString()); StringBuilder sbBucket = new StringBuilder(60); iniFileHelper.GetIniString("qiniu", "Bucket", "", sbBucket, sbBucket.Capacity); Zone zone = Zone.ZONE_CN_East; switch (sbBucket.ToString()) { case "ZONE_CN_East": zone = Zone.ZONE_CN_East; break; case "ZONE_CN_North": zone = Zone.ZONE_CN_North; break; case "ZONE_CN_South": zone = Zone.ZONE_CN_South; break; case "ZONE_US_North": zone = Zone.ZONE_US_North; break; default: zone = Zone.ZONE_AS_Singapore; break; } Config config = new Config() { //// 空间对应的机房 Zone = zone, // 是否使用https域名 UseHttps = true, // 上传是否使用cdn加速 UseCdnDomains = true }; FormUploader upload = new FormUploader(config); HttpResult result = upload.UploadStream(stream, fileName + ".jpg", uploadToken, null); StringBuilder sbDomain = new StringBuilder(60); iniFileHelper.GetIniString("qiniu", "Domain", "", sbDomain, sbDomain.Capacity); imgUrRL = sbDomain.Length > 0 ? sbDomain.ToString() : imgUrRL; compressMsg.PwdFileUrl = imgUrRL + fileName + ".jpg"; doSendMsg(compressMsg); if (result.Code == 200) { return("Ok"); } return("fall"); }