Foros del Web » Programando para Internet » ASPX (.net) »

problemas para guardar path relativa de fileupload

Estas en el tema de problemas para guardar path relativa de fileupload en el foro de ASPX (.net) en Foros del Web. Hola gente, perdon por la molestia pero la verdad es que hace dias que trato de encontrar solucion a este problema y no puedo. Les ...
  #1 (permalink)  
Antiguo 19/03/2011, 18:32
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 8 meses
Puntos: 0
problemas para guardar path relativa de fileupload

Hola gente, perdon por la molestia pero la verdad es que hace dias que trato de encontrar solucion a este problema y no puedo.

Les explico, tengo una bd access la cual leo con un gridview, en este inserte una nueva columna con un fileupload, el cual solo aparese cuando edito algun registro.
La orden de cargar el archivo que necesita el fileupload lo ejecuto desde el mismo boton de actualizar del gridview.
Lo que necesito es que al ejecutar esta accion se guarde en la bd le path del archivo cargado en el registro al cual se le hizo la modificacion.
Es decir: mi fileupload garda los archivos y esa direccion relativa la tengo que guardar en la bd para que despues pueda llamar la imagen de cada registro.

aqui les dejo los codigos

Código:
Partial Class Default2
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim index As Integer = Integer.Parse(DirectCast(sender, Button).CommandArgument)

        Dim file As FileUpload = DirectCast(GridView1.Rows(index).FindControl("FileUpload1"), FileUpload)

        If file IsNot Nothing Then
            If file.HasFile Then
                file.SaveAs(Server.MapPath("~") & "\Upload\" & System.IO.Path.GetFileName(file.PostedFile.FileName))


                'pense en hacer algo asi y despues meter "direccion" dentro del registro, pero no se como
                'Dim direccion As String = "\Upload\" + file.PostedFile.FileName


            End If
        End If
Código:
     <asp:AccessDataSource ID="AccessDataSource1" runat="server"
            DataFile="~/Base de datos.mdb"
            DeleteCommand="DELETE FROM [alquileres] WHERE [Id_alquileres] = ?"
            InsertCommand="INSERT INTO [alquileres] ([Id_alquileres], [a_supcub], [a_supdescub], [a_ant], [a_valor], [a_imagen], [a_id_tipo], [a_vista], [a_observacion], [a_id_provincia], [a_localidad]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
            SelectCommand="SELECT alquileres.Id_alquileres, alquileres.a_supcub, alquileres.a_supdescub, alquileres.a_ant, alquileres.a_valor, alquileres.a_imagen, alquileres.a_id_tipo, alquileres.a_vista, alquileres.a_observacion, alquileres.a_id_provincia, alquileres.a_localidad, tipo.descripcion FROM (alquileres INNER JOIN tipo ON alquileres.a_id_tipo = tipo.Id_tipo)"
            
            UpdateCommand="UPDATE [alquileres] SET [a_supcub] = ?, [a_supdescub] = ?, [a_ant] = ?, [a_valor] = ?, [a_imagen] = ?, [a_id_tipo] = ?, [a_vista] = ?, [a_observacion] = ?, [a_id_provincia] = ?, [a_localidad] = ? WHERE [Id_alquileres] = ?">
            <DeleteParameters>
                <asp:Parameter Name="Id_alquileres" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="a_supcub" Type="String" />
                <asp:Parameter Name="a_supdescub" Type="String" />
                <asp:Parameter Name="a_ant" Type="String" />
                <asp:Parameter Name="a_valor" Type="String" />
                <asp:Parameter Name="a_imagen" Type="String" />
                <asp:Parameter Name="a_id_tipo" Type="Int32" />
                <asp:Parameter Name="a_vista" Type="Boolean" />
                <asp:Parameter Name="a_observacion" Type="String" />
                <asp:Parameter Name="a_id_provincia" Type="Int32" />
                <asp:Parameter Name="a_localidad" Type="String" />
                <asp:Parameter Name="Id_alquileres" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="Id_alquileres" Type="Int32" />
                <asp:Parameter Name="a_supcub" Type="String" />
                <asp:Parameter Name="a_supdescub" Type="String" />
                <asp:Parameter Name="a_ant" Type="String" />
                <asp:Parameter Name="a_valor" Type="String" />
                <asp:Parameter Name="a_imagen" Type="String" />
                <asp:Parameter Name="a_id_tipo" Type="Int32" />
                <asp:Parameter Name="a_vista" Type="Boolean" />
                <asp:Parameter Name="a_observacion" Type="String" />
                <asp:Parameter Name="a_id_provincia" Type="Int32" />
                <asp:Parameter Name="a_localidad" Type="String" />
            </InsertParameters>
            
        </asp:AccessDataSource>
        
    </p>
    <p>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
            DataSourceID="AccessDataSource1" AllowPaging="True"
            DataKeyNames="Id_alquileres">
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <EditItemTemplate>
                        <asp:Button ID="Button1" runat="server" CausesValidation="True" CommandArgument='<%# Container.DataItemIndex  %>'
                            CommandName="Update" onclick="Button1_Click" Text="Actualizar"></asp:Button>
                        &nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
                            CommandName="Cancel" Text="Cancelar"></asp:LinkButton>
                        &nbsp;
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
                            CommandName="Edit" Text="Editar"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Id_alquileres" HeaderText="Id_alquileres"
                    InsertVisible="False" SortExpression="Id_alquileres" ReadOnly="True" />
                <asp:BoundField DataField="a_supcub" HeaderText="a_supcub"
                    SortExpression="a_supcub" />
                <asp:BoundField DataField="a_supdescub" HeaderText="a_supdescub"
                    SortExpression="a_supdescub" />
                <asp:BoundField DataField="a_ant" HeaderText="a_ant" SortExpression="a_ant" />
                <asp:BoundField DataField="a_valor" HeaderText="a_valor"
                    SortExpression="a_valor" />
                <asp:BoundField DataField="a_id_imagen" HeaderText="a_id_imagen"
                    SortExpression="a_id_imagen" />
                <asp:TemplateField HeaderText="a_id_tipo" SortExpression="a_id_tipo">
                    <EditItemTemplate>
                       <asp:DropDownList ID="DropDownList1" runat="server"
                              DataSourceID="AccessDataSource1" DataTextField="descripcion"
                          DataValueField="Id_tipo"  Text='<%# Bind("a_id_tipo") %>'>
                           </asp:DropDownList>

                        <asp:AccessDataSource ID="AccessDataSource1" runat="server"
                            DataFile="~/Base de datos.mdb" SelectCommand="SELECT * FROM [tipo]">
                        </asp:AccessDataSource>

                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("a_id_tipo") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:CheckBoxField DataField="a_vista" HeaderText="a_vista"
                    SortExpression="a_vista" />
                <asp:BoundField DataField="a_observacion" HeaderText="a_observacion"
                    SortExpression="a_observacion" />
                <asp:BoundField DataField="a_id_provincia" HeaderText="a_id_provincia"
                    SortExpression="a_id_provincia" />
                <asp:BoundField DataField="a_localidad" HeaderText="a_localidad"
                    SortExpression="a_localidad" />
                <asp:TemplateField>
                    <EditItemTemplate>
                        <asp:FileUpload ID="FileUpload1"   runat="server"   />
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
desde ya muchas gracias!!!!
  #2 (permalink)  
Antiguo 21/03/2011, 14:25
Avatar de SDEK  
Fecha de Ingreso: diciembre-2009
Ubicación: MX
Mensajes: 156
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: problemas para guardar path relativa de fileupload

Hola,

Coloca esto
Código VB.NET:
Ver original
  1. "\Upload\" & System.IO.Path.GetFileName(file.PostedFile.FileName)
en una variable string y luego pasa dicha variable al file.SaveAs despues de esto
Código VB.NET:
Ver original
  1. Server.MapPath("~") &

Saludos,
__________________
Tecnologías de la Información
Karel Priego
| @karelpriego

Última edición por SDEK; 21/03/2011 a las 14:25 Razón: caracter corregido
  #3 (permalink)  
Antiguo 21/03/2011, 15:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: problemas para guardar path relativa de fileupload

SDEK, gracias por tu sugerencia, localizar la ruta relativa lo logre con

Código:
Dim direccion As String = "\Upload\" + file.PostedFile.FileName
mi problema es como lo guardo en la bd, por el momento pence en algo asi

Código:
   Private conn As OleDbConnection
    Private comm As OleDbCommand

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        Dim index As Integer = Integer.Parse(DirectCast(sender, Button).CommandArgument)

        Dim file As FileUpload = DirectCast(GridView1.Rows(index).FindControl("FileUpload1"), FileUpload)

        If file IsNot Nothing Then
            If file.HasFile Then
                file.SaveAs(Server.MapPath("~") & "\Upload\" & System.IO.Path.GetFileName(file.PostedFile.FileName))

                Dim ruta As String = "\Upload\" + file.PostedFile.FileName

                'Toma los datos de la conexión desde el archivo web.config y abre la conexión
                conn = New OleDbConnection
                conn.ConnectionString = ConfigurationManager.ConnectionStrings("Base de datosConnectionString2").ToString()

                comm = New OleDbCommand("UPDATE [alquileres] SET  [a_imagen] = ? WHERE [Id_alquileres] = ?")
                comm.Parameters.Add("@Id_alquileres", OleDbType.Integer)
                comm.Parameters.Add("@a_localidad", OleDbType.VarChar)
                comm.Parameters("@a_imagen").Value = ruta
               
                comm.Connection = conn
                conn.Open()
                comm.ExecuteNonQuery()
                conn.Close()

            End If
        End If
el problema que tengo es que me dice "El parámetro ?_1 no tiene un valor predeterminado." pero si le pongo comm.parameter("@Id_alquileres) me dice que debo asignarle un valor o utilizar su valor, pero no se que valor asignarle

Última edición por SANCHIMARIO; 21/03/2011 a las 17:20
  #4 (permalink)  
Antiguo 22/03/2011, 20:23
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años, 7 meses
Puntos: 30
Respuesta: problemas para guardar path relativa de fileupload

Hola,

El problema viene por la definicion de la consulta. Mira un ejemplo correcto
http://msdn.microsoft.com/en-us/libr...tecommand.aspx

Saludos,
__________________
http://geekswithblogs.net/jaullo/Default.aspx
Si te he ayudado regalame Karma positivo!!!
  #5 (permalink)  
Antiguo 24/03/2011, 17:09
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: problemas para guardar path relativa de fileupload

Cita:
Iniciado por jaullo Ver Mensaje
Hola,

El problema viene por la definicion de la consulta. Mira un ejemplo correcto
[URL="http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.updatecommand.a spx"]http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.updatecommand.a spx[/URL]

Saludos,
hola jaullo, disculpa mi ignorancia pero no me doy cuenta como hacer la sentencia.
podrias darme un ejemplo con mis codigos

veo el link pero no puedo hacer que funcione

gracias
  #6 (permalink)  
Antiguo 28/03/2011, 09:17
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 23 años, 7 meses
Puntos: 39
Respuesta: problemas para guardar path relativa de fileupload

Yo lo hago asi..


//Defino donde voy a guardar
Código ASP:
Ver original
  1. string path = this.Server.MapPath(".") + "/carpeta_archivos/";


//Guardo
Código ASP:
Ver original
  1. file.SaveAs(Path.Combine(@path, file.FileName));


--Esto te da la hubicación de hasta donde esta el archivo que ejecuta:
this.Server.MapPath(".")

--Esta es una carpta dentro de donde esta el archivos que hara el proceso..
"/carpeta_archivos/"

file es para framework 3.0 en adelante si estas con un frame works anterior cambia a:

Código ASP:
Ver original
  1. upload.SaveAs(Path.Combine(@path, file.FileName));
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/

Última edición por Potro; 28/03/2011 a las 09:29

Etiquetas: fileupload, path, relativa, aspx
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 00:03.