示例#1
0
        public async Task <ActionResult <ResponseUsuarioSubirImagenDto> > ImagenMetodo3()
        {
            ResponseUsuarioSubirImagenDto respuesta = new ResponseUsuarioSubirImagenDto();

            try
            {
                var archivoTemp   = Request.Form.Files["Archivo"];
                var idUsuarioTemp = Request.Form["IdUsuario"];

                if (archivoTemp == null)
                {
                    Logger.Log(Logger.Level.Error, "No se obtuvo el valor del objeto Archivo");
                }

                if (string.IsNullOrEmpty(idUsuarioTemp))
                {
                    Logger.Log(Logger.Level.Error, "No se obtuvo el valor del objeto IdUsuario");
                }
            }
            catch (InvalidOperationException invEx)
            {
                Logger.Log(Logger.Level.Error, invEx.InnerException == null ? invEx.Message : invEx.InnerException.Message);
                respuesta.ListaError.Add(new ErrorDto
                {
                    Mensaje = "Los parametros 'Archivo' y 'IdUsuario' deben ser enviados mediante 'multipart/form-data'"
                });
                respuesta.ListaError.Add(new ErrorDto
                {
                    Mensaje = (string.IsNullOrEmpty(invEx.StackTrace) ? invEx.Message : invEx.StackTrace).Replace(Environment.NewLine, " ")
                });
                return(BadRequest(respuesta));
            }

            var archivo   = Request.Form.Files["Archivo"];
            var idUsuario = Request.Form["IdUsuario"];

            if (archivo == null || string.IsNullOrEmpty(idUsuario))
            {
                respuesta.ListaError.Add(new ErrorDto
                {
                    Mensaje = "Los parametros 'Archivo' y 'IdUsuario' deben ser enviados mediante 'multipart/form-data'"
                });
                return(BadRequest(respuesta));
            }

            //transformar IFormFile hacia bytes
            var file = archivo;

            if (file.Length == 0)
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Los parametros enviados no son correctos"
                });
                return(BadRequest(respuesta));
            }

            string urlImagenNueva = string.Empty;
            var    nombreArchivo  = System.Net.Http.Headers.ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
            string extension      = Path.GetExtension(nombreArchivo).Trim().Replace(".", string.Empty).ToLower();

            byte[] archivoBytes;
            using (var memoryStream = new MemoryStream())
            {
                await file.CopyToAsync(memoryStream);

                archivoBytes = memoryStream.ToArray();
            }
            RequestUsuarioModificarImagenMetodo1Dto modelo = new RequestUsuarioModificarImagenMetodo1Dto
            {
                ArchivoBytes      = archivoBytes,
                ExtensionSinPunto = extension,
                IdUsuario         = Convert.ToInt64(idUsuario)
            };
            var result = await Task.FromResult(_lnUsuario.SubirImagenAws(modelo)); //, ref urlImagenNueva));

            if (string.IsNullOrEmpty(result.Result))                               // == 0)
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Error al intentar registrar"
                });
                return(BadRequest(respuesta));
            }
            if (result.Result == "0")
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Error al intentar registrar"
                });
                return(BadRequest(respuesta));
            }
            if (result.Result == "-1")
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "El IdUsuario proporcionado no es válido"
                });
                return(BadRequest(respuesta));
            }

            respuesta.ProcesadoOk = 1;
            respuesta.UrlImagen   = result.Result; //urlImagenNueva;

            return(Ok(respuesta));
        }
示例#2
0
        //public UsuarioObtenerUrlImagenDto ObtenerUrlImagenPorId(long id)
        //{
        //    return _adUsuario.ObtenerUrlImagenPorId(id);
        //}

        //public int EliminarUrlImagen(long id)
        //{
        //    return _adUsuario.EliminarUrlImagen(id);
        //}

        public async Task <string> SubirImagenAws(RequestUsuarioModificarImagenMetodo1Dto entidad)
        {
            //int respuesta = 0;
            string url = string.Empty;

            try
            {
                var objetoImagenBd = _adUsuario.ObtenerUrlImagenPorId(entidad.IdUsuario);
                if (objetoImagenBd == null)
                {
                    //url = string.Empty;
                    //return -1;
                    url = "-1";
                    return(url);
                }

                url = ConstanteVo.UrlAmazon;
                string nombreDirectorio = "Usuario";

                EliminarImagenAws(objetoImagenBd.UrlImagen, entidad.IdUsuario);
                //int respuestaEliminar =
                //if (respuestaEliminar > 0)
                //{
                using (var client = new AmazonS3Client(
                           Infraestructura.Utilitario.Util.Desencriptar(ConstanteVo.AccessKeyAws),
                           Infraestructura.Utilitario.Util.Desencriptar(ConstanteVo.SecretAccessKeyAws),
                           RegionEndpoint.USEast2))
                {
                    string nombreArchivo = string.Format("{0}_{1}{2}{3}_{4}{5}{6}_{7}.{8}",
                                                         entidad.IdUsuario,
                                                         DateTime.Now.Year.ToString("d4"),
                                                         DateTime.Now.Month.ToString("d2"),
                                                         DateTime.Now.Day.ToString("d2"),
                                                         DateTime.Now.Hour.ToString("d2"),
                                                         DateTime.Now.Minute.ToString("d2"),
                                                         DateTime.Now.Second.ToString("d2"),
                                                         DateTime.Now.Millisecond.ToString("d3"),
                                                         entidad.ExtensionSinPunto);
                    url = string.Format("{0}{1}/{2}", url, nombreDirectorio, nombreArchivo);

                    using (var ms = new MemoryStream(entidad.ArchivoBytes))
                    {
                        var uploadRequest = new TransferUtilityUploadRequest
                        {
                            InputStream = ms,
                            Key         = nombreArchivo,
                            BucketName  = string.Format("encuentralo/{0}", nombreDirectorio),
                            CannedACL   = S3CannedACL.PublicRead
                        };

                        var fileTransferUtility = new TransferUtility(client);
                        await fileTransferUtility.UploadAsync(uploadRequest);
                    }
                }

                //LnUsuario lnUsuario = new LnUsuario();
                int respuestaBd = ModificarUrlImagenPorIdUsuario(entidad.IdUsuario, url);
                if (respuestaBd == 0)
                {
                    url = "0";
                }

                //}
            }
            catch (AmazonS3Exception exSe)
            {
                Log(Level.Error, String.Format("AmazonS3Exception: {0}", exSe));
            }
            catch (Exception ex)
            {
                Log(Level.Error, String.Format("Exception: {0}", ex));
            }

            return(url);// respuesta;
        }
示例#3
0
        public async Task <ActionResult <ResponseUsuarioSubirImagenDto> > ImagenMetodo1([FromBody] RequestUsuarioModificarImagenMetodo1Dto modelo)
        {
            string urlImagenNueva = string.Empty;

            ResponseUsuarioSubirImagenDto respuesta = new ResponseUsuarioSubirImagenDto();

            if (!ModelState.IsValid)
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Los parametros enviados no son correctos"
                });
                return(BadRequest(respuesta));
            }

            if (modelo == null)
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Los parametros enviados no son correctos"
                });
                return(BadRequest(respuesta));
            }

            if (modelo.ArchivoBytes == null)
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "El archivo de bytes es requerido"
                });
                return(BadRequest(respuesta));
            }

            var result = await Task.FromResult(_lnUsuario.SubirImagenAws(modelo)); //, ref urlImagenNueva));

            if (string.IsNullOrEmpty(result.Result))                               // == 0)
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Error al intentar registrar"
                });
                return(BadRequest(respuesta));
            }
            if (result.Result == "0")
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "Error al intentar registrar"
                });
                return(BadRequest(respuesta));
            }
            if (result.Result == "-1")
            {
                respuesta.ListaError.Add(new ErrorDto {
                    Mensaje = "El IdUsuario proporcionado no es válido"
                });
                return(BadRequest(respuesta));
            }

            respuesta.ProcesadoOk = 1;
            respuesta.UrlImagen   = result.Result; //urlImagenNueva;

            return(Ok(respuesta));
        }