Foros del Web » Programación para mayores de 30 ;) » .NET »

Guardar archivo imagen

Estas en el tema de Guardar archivo imagen en el foro de .NET en Foros del Web. Hola, Estoy usando C# con el control FileUpload, el problema que tengo es el siguiente: 1.No se como usarlo para que en base al archivo ...
  #1 (permalink)  
Antiguo 17/09/2014, 10:12
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 10 meses
Puntos: 3
Pregunta Guardar archivo imagen

Hola,

Estoy usando C# con el control FileUpload, el problema que tengo es el siguiente:


1.No se como usarlo para que en base al archivo que seleccione (una imagen) seta se guarde en una carpeta de mi proyecto (imagenes/FotosEmpleado).

2. como hacerle para validar que este archivo no sea existente en esa carpeta.


3.Como guardo ese archivo en la base de datos


Gracias
  #2 (permalink)  
Antiguo 17/09/2014, 11:31
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Guardar archivo imagen

Buenas compañero,

Te paso el enlace a la página de Microsoft: http://msdn.microsoft.com/es-es/libr...v=vs.100).aspx


Un saludo!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #3 (permalink)  
Antiguo 19/09/2014, 10:05
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 10 meses
Puntos: 3
Exclamación Respuesta: Guardar archivo imagen

Cita:
Iniciado por Drako_18 Ver Mensaje
Buenas compañero,

Te paso el enlace a la página de Microsoft: http://msdn.microsoft.com/es-es/libr...v=vs.100).aspx


Un saludo!!!
Hola Drako

Ya implemente ese código pero tengo el problema de que una ves que agrego el archivo en el fileUpload y doy clic en guardar veo que la propiedad FileUpload1.HasFile es siempre FALSE. lo unico que aqgregue en el archivo aspx es <asp:FileUpload ID="FileUpload1" name="FileUpload1" runat="server"> </asp:FileUpload>

El evento rbnGuardar_Click lo tengo en asp del control del boton con OnClick="rbnGuardar_Click"


Este es el código en aspx.cs:

Código C#:
Ver original
  1. //Guarda Nuevo empleado o Edicion de empleado
  2.         protected void rbnGuardar_Click(object sender, EventArgs e)
  3.         {
  4.  
  5.             Boolean fileOK = false;
  6.             String path = Server.MapPath("~/Recursos/Imagenes");
  7.             if (FileUpload1.HasFile)
  8.             {
  9.                 String fileExtension =
  10.                     System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
  11.                 String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg" };
  12.                 for (int i = 0; i < allowedExtensions.Length; i++)
  13.                 {
  14.                     if (fileExtension == allowedExtensions[i])
  15.                     {
  16.                         fileOK = true;
  17.                     }
  18.                 }
  19.             }
  20.  
  21.             if (fileOK)
  22.             {
  23.                
  24.                 FileUpload1.PostedFile.SaveAs(path
  25.                     + FileUpload1.FileName);
  26.                
  27.             }



¿Alguna idea?


Gracias
  #4 (permalink)  
Antiguo 19/09/2014, 11:55
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Guardar archivo imagen

Buenas compañero,

Acabo de probar un ejemplo sencillo y me ha funcionado perfectamente. Comprueba que por algún UpdatePanel no esté recargando la página sin tenerlo que hacer y ahí estés perdiendo el valor del FileUpload...

Si quieres, prueba en un proyecto a parte para ver el ejemplo, yo he puesto esto:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload runat="server" ID="file" />
<asp:Button runat="server" ID="btnGuardar" />
</div>
</form>
</body>
</html>

Y en el VB:
Public Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'No tengo nada que precargar.
End Sub


Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
Dim sFichero As String = Me.file.FileName
Me.file.PostedFile.SaveAs(Server.MapPath("~/") & Me.file.FileName)
End Sub
End Class

En mi caso utilizo el directorio principal porque no quiero crearme ninguna carpeta para la prueba, pero sería lo mismo.... Y como es una prueba y voy con el depurador paso a paso, prefiero no comprobar en código el HasFile, lo veo en la propia depuración.

Si el ejemplo sencillo te funciona, es cuestión de ver qué está recargando la página antes de que accedas al valor del FileUpload.


Un saludo!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)
  #5 (permalink)  
Antiguo 19/09/2014, 13:26
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 10 meses
Puntos: 3
Exclamación Respuesta: Guardar archivo imagen

Cita:
Iniciado por Drako_18 Ver Mensaje
Buenas compañero,

Acabo de probar un ejemplo sencillo y me ha funcionado perfectamente. Comprueba que por algún UpdatePanel no esté recargando la página sin tenerlo que hacer y ahí estés perdiendo el valor del FileUpload...

Si quieres, prueba en un proyecto a parte para ver el ejemplo, yo he puesto esto:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload runat="server" ID="file" />
<asp:Button runat="server" ID="btnGuardar" />
</div>
</form>
</body>
</html>

Y en el VB:
Public Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'No tengo nada que precargar.
End Sub


Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
Dim sFichero As String = Me.file.FileName
Me.file.PostedFile.SaveAs(Server.MapPath("~/") & Me.file.FileName)
End Sub
End Class

En mi caso utilizo el directorio principal porque no quiero crearme ninguna carpeta para la prueba, pero sería lo mismo.... Y como es una prueba y voy con el depurador paso a paso, prefiero no comprobar en código el HasFile, lo veo en la propia depuración.

Si el ejemplo sencillo te funciona, es cuestión de ver qué está recargando la página antes de que accedas al valor del FileUpload.


Un saludo!!!
Cita:
Iniciado por Drako_18 Ver Mensaje
Buenas compañero,

Acabo de probar un ejemplo sencillo y me ha funcionado perfectamente. Comprueba que por algún UpdatePanel no esté recargando la página sin tenerlo que hacer y ahí estés perdiendo el valor del FileUpload...

Si quieres, prueba en un proyecto a parte para ver el ejemplo, yo he puesto esto:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="WebApplication1._Default" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload runat="server" ID="file" />
<asp:Button runat="server" ID="btnGuardar" />
</div>
</form>
</body>
</html>

Y en el VB:
Public Class _Default
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'No tengo nada que precargar.
End Sub


Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
Dim sFichero As String = Me.file.FileName
Me.file.PostedFile.SaveAs(Server.MapPath("~/") & Me.file.FileName)
End Sub
End Class

En mi caso utilizo el directorio principal porque no quiero crearme ninguna carpeta para la prueba, pero sería lo mismo.... Y como es una prueba y voy con el depurador paso a paso, prefiero no comprobar en código el HasFile, lo veo en la propia depuración.

Si el ejemplo sencillo te funciona, es cuestión de ver qué está recargando la página antes de que accedas al valor del FileUpload.


Un saludo!!!

Gracias Drako

Vi que el error que tenia era por el asp lo resolvi con lo siguiente pero sucede que cuando agrego el archivo por primera vez no lo guarda si no hasta que doy el segundo clic en guardar ¿ tambien te paso eso? ¿Como lo resolviste?

Estoy usando C#


codigo de asp
Código ASP:
Ver original
  1. <asp:UpdatePanel ID="UpdatePanel" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional">
  2.                                     <ContentTemplate>
  3.                                        <asp:FileUpload ID="FileUpload1"  name="FileUpload1" runat="server"> </asp:FileUpload>
  4.                                         <br />
  5.                                        
  6.                                     </ContentTemplate>
  7.                                     <Triggers>
  8.                                         <asp:PostBackTrigger ControlID="rbnGuardar"/>
  9.                                     </Triggers>
  10.                                 </asp:UpdatePanel>


Gracias
  #6 (permalink)  
Antiguo 19/09/2014, 14:51
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 18 años, 11 meses
Puntos: 16
Respuesta: Guardar archivo imagen

Buenas!

Pues si te digo la verdad... Con el ejemplo que te he pasado se hace directo, desde el primer click...
En teoría no deberías tener nada referente a triggers, ni tan siquiera te haría falta el UP, pero bueno jejejeje
Si quieres, puedes poner el código asp completo y le echo un vistazo a ver si veo algo "extraño".

Pero eso tiene pinta de algún UP, o alguna declaración de la página que no debería ser así para lo que la estás utilizando.


Un saludo!!!
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:15.