Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/09/2014, 13:26
antvo
 
Fecha de Ingreso: junio-2012
Mensajes: 233
Antigüedad: 11 años, 11 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