Beispiel #1
0
        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 }));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
        }