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