public ActionResult Upload() { //tamanho da imagem: 150x100, olhe a chamada para o metodo image.FitSize(). if (Request.Files.Count != 1) { Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest; return(Json(new { error = "Bad Request" })); } var file = Request.Files[0]; if (file.ContentLength > 5 * 1024 * 1024) // 5MB { Response.StatusCode = (int)System.Net.HttpStatusCode.RequestEntityTooLarge; return(Json(new { error = "Too Large" })); } //nome do arquivo: /container/tp150x100/md5(timestamp + nome arquivo).jpg var filename = Path.GetFileNameWithoutExtension(file.FileName); var timeFileName = DateTime.UtcNow.ToFileTimeUtc().ToString() + filename; HMACMD5 md5 = new HMACMD5(NimbusConfig.GeneralHMACKey); md5.ComputeHash(Encoding.Unicode.GetBytes(timeFileName)); var fileHash = Base32.ToString(md5.Hash).ToLower() + ".jpg"; var uploadFileName150x100 = "tp150x100/" + fileHash; var uploadFileName60x60 = "tp60x60/" + fileHash; var image = new ImageManipulation(Request.Files[0].InputStream); //faz upload da imagem 150x100 image.FitSize(150, 100); var imageStream = image.SaveToJpeg(); var blob = new AzureBlob(Const.Azure.TopicContainer, uploadFileName150x100); blob.UploadStreamToAzure(imageStream); image.FitSize(60, 60); var image60x60Stream = image.SaveToJpeg(); var blob60x60 = new AzureBlob(Const.Azure.TopicContainer, uploadFileName60x60); blob60x60.UploadStreamToAzure(image60x60Stream); var pathFinal = blob.BlockBlob.Uri.AbsoluteUri.Replace("https://", "http://").Replace("***REMOVED***", "storage.portalnimbus.com.br"); //retorna apenas a 150x100. return(Json(new { url = pathFinal })); }
public static string UploadAvatar(ImageManipulation img, string id) { string pathAvatar; HMACMD5 md5 = new HMACMD5(NimbusConfig.GeneralHMACKey); var nomeImgAvatar = "avatar-" + id; md5.ComputeHash(Encoding.Unicode.GetBytes(nomeImgAvatar)); var nomeHashExt = Base32.ToString(md5.Hash).ToLower() + ".jpg"; nomeImgAvatar = "av130x130/" + nomeHashExt; var nomeImgAvatar180x100 = "av180x100/" + nomeHashExt; var nomeImgAvatar35x35 = "av35x35/" + nomeHashExt; var nomeImgAvatar60x60 = "av60x60/" + nomeHashExt; //envia as imagens redimensionadas Task <string> img1 = Task.Run(() => { var clone = new ImageManipulation(img); clone.FitSize(200, 200); //muito embora a url é av130x130, o tamanho do avatar é 200x200. var blob = new AzureBlob(Const.Azure.AvatarContainer, nomeImgAvatar); blob.UploadStreamToAzure(clone.SaveToJpeg()); return(blob.BlockBlob.Uri.AbsoluteUri.Replace("https://", "http://").Replace("***REMOVED***", "storage.portalnimbus.com.br")); }); Task <string> img2 = Task.Run(() => { var clone = new ImageManipulation(img); clone.FitSize(180, 100); var blob180x100 = new AzureBlob(Const.Azure.AvatarContainer, nomeImgAvatar180x100); blob180x100.UploadStreamToAzure(clone.SaveToJpeg()); return(string.Empty); }); Task <string> img3 = Task.Run(() => { var clone = new ImageManipulation(img); clone.FitSize(60, 60); var blob60x60 = new AzureBlob(Const.Azure.AvatarContainer, nomeImgAvatar60x60); blob60x60.UploadStreamToAzure(clone.SaveToJpeg()); return(string.Empty); }); Task <string> img4 = Task.Run(() => { var clone = new ImageManipulation(img); clone.FitSize(35, 35); var blob35x35 = new AzureBlob(Const.Azure.AvatarContainer, nomeImgAvatar35x35); blob35x35.UploadStreamToAzure(clone.SaveToJpeg()); return(string.Empty); }); Task.WaitAll(img1, img2, img3, img4); pathAvatar = img1.Result; return(pathAvatar); }
public ActionResult TopicImg(string field = "") { if (Request.Files.Count != 1 || Request.Files[0].ContentLength == 0) { var errorModel = new UploadModel() { UploadAction = "topicimg", ReturnUploadField = field, isFatalError = true, ErrorMessage = "Arquivo não enviado." }; return(View("Upload", errorModel)); } var file = Request.Files[0]; if (file.ContentLength > 5 * 1024 * 1024) // 5MB { var errorModel = new UploadModel() { UploadAction = "topicimg", ReturnUploadField = field, isFatalError = true, ErrorMessage = "O tamanho do arquivo não pode ser superior a 5MB." }; return(View("Upload", errorModel)); } //nome do arquivo: /container/tp150x100/md5(timestamp + nome arquivo).jpg var filename = Path.GetFileNameWithoutExtension(file.FileName); var extension = Path.GetExtension(file.FileName).ToLower(); var timeFileName = DateTime.UtcNow.ToFileTimeUtc().ToString() + filename; if (!imageExtensions.Contains(extension)) { //nao fazer upload var errorModel = new UploadModel() { UploadAction = "topicimg", ReturnUploadField = field, isFatalError = true, ErrorMessage = "Não é permitido o envio de arquivos com extensão " + extension + "." }; return(View("Upload", errorModel)); } HMACMD5 md5 = new HMACMD5(NimbusConfig.GeneralHMACKey); md5.ComputeHash(Encoding.Unicode.GetBytes(timeFileName)); var fileHash = Base32.ToString(md5.Hash).ToLower() + ".jpg"; var uploadFileName150x100 = "tp150x100/" + fileHash; var uploadFileName60x60 = "tp60x60/" + fileHash; var image = new ImageManipulation(Request.Files[0].InputStream); //faz upload da imagem 150x100 image.FitSize(150, 100); var imageStream = image.SaveToJpeg(); var blob = new AzureBlob(Const.Azure.TopicContainer, uploadFileName150x100); blob.UploadStreamToAzure(imageStream); image.FitSize(60, 60); var image60x60Stream = image.SaveToJpeg(); var blob60x60 = new AzureBlob(Const.Azure.TopicContainer, uploadFileName60x60); blob60x60.UploadStreamToAzure(image60x60Stream); var pathFinal = blob.BlockBlob.Uri.AbsoluteUri.Replace("https://", "http://").Replace("***REMOVED***", "storage.portalnimbus.com.br"); var previewModel = new UploadModel() { Url = pathFinal, UploadAction = "topicimg", ReturnUploadField = field, isFatalError = false, ErrorMessage = null, PreviewType = UploadModel.PreviewTypeEnum.none }; return(View("UploadFinished", previewModel)); }