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

Abrir un archivo previamente subido por el usuario

Estas en el tema de Abrir un archivo previamente subido por el usuario en el foro de ASPX (.net) en Foros del Web. Hola, lo que sucede es que necesito desde mi aplicación , poder visualizar un archivo que subio con antelación un usuario. Explico mas detalladamente esto, ...
  #1 (permalink)  
Antiguo 19/11/2012, 09:48
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Abrir un archivo previamente subido por el usuario

Hola, lo que sucede es que necesito desde mi aplicación , poder visualizar un archivo que subio con antelación un usuario. Explico mas detalladamente esto,

Tengo un GridView donde me muestra mediante filtración los datos correspondientes a un usuario, y luego algunas de las columnas que tengo ocultas las muestro mas detalladamente en varios textbox, y una de esas es el archivo adjunto del usuario, pero lo que sucede es que solo me muestra el nombre del archivo, y quisiera saber si hay una forma no se de que ese nombre se muestre como un hipervinculo y al darle click me lo abra o no se algo asi. Lo esencial poder abrir ese archivo en tiempo de ejecución

Ah y la manera en que estoy guardando el archivo subido por el usuario es así:

Código C#:
Ver original
  1. String path = Server.MapPath("~/Archivos/");

y ps claro estoy haciendo uso del Fileupload para que se efectue. Pero creo no es importante en este momento poner las demás líneas

Gracias y espero haberme hecho entender
  #2 (permalink)  
Antiguo 19/11/2012, 10:19
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Abrir un archivo previamente subido por el usuario

Y el archivo de que tipo es ? es de imagen o es una dirección url ?
  #3 (permalink)  
Antiguo 19/11/2012, 10:33
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Abrir un archivo previamente subido por el usuario

Si lo que quieres es ponerlo en un control HyperLink dentro del gridView puedes realizar lo de esta manera, dentro del evento del RowDataBound gridview:

Código Javascript:
Ver original
  1. <asp:TemplateField HeaderText="Temperatura">
  2.   <ItemTemplate>
  3.     <asp:HyperLink ID="nombreArchivo" runat="server"></asp:HyperLink>
  4.   </ItemTemplate>
  5. </asp:TemplateField>

Código Javascript:
Ver original
  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  2. {
  3.  if (e.Row.RowType == DataControlRowType.DataRow)
  4.  {
  5.   string KeyNombre = GridView1.DataKeys[e.Row.RowIndex].Values["Archivo"].ToString();  
  6.   HyperLink nombre = e.Row.FindControl("nombreArchivo") as HyperLink;
  7.  
  8.   nombre.NavigateUrl = "~/Archivos/" + KeyNombre;              
  9.  }
  10. }

Espero y te sea de ayuda.
  #4 (permalink)  
Antiguo 19/11/2012, 14:02
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Abrir un archivo previamente subido por el usuario

una pregunta cunado pones

string KeyNombre = GridView1.DataKeys[e.Row.RowIndex].Values["Archivo"].ToString();
HyperLink nombre = e.Row.FindControl("nombreArchivo") as HyperLink;

En donde dice "Archivo" alli debe ir el nombre de la columna como aparece en la Base de datos? y donde dice "nombreArchivo" que deberia ir

Gracias
  #5 (permalink)  
Antiguo 19/11/2012, 15:10
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Abrir un archivo previamente subido por el usuario

En donde dice "Archivo" alli debe ir el nombre de la columna como aparece en la Base de datos? y donde dice "nombreArchivo" que deberia ir

Si, por ejemplo en la propiedad del gridview DataKeyNames que vendría siendo de la BD:

Código Javascript:
Ver original
  1. DataKeyNames="Archivo"

y "nombreArchivo" vendría siendo el ID del control del HyperLink
  #6 (permalink)  
Antiguo 19/11/2012, 18:31
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Abrir un archivo previamente subido por el usuario

Ok gracias por la aclaracion, voy a intertar hacerlo asi, si depronto me funciona
  #7 (permalink)  
Antiguo 20/11/2012, 07:57
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
De acuerdo Respuesta: Abrir un archivo previamente subido por el usuario

Que no se te olvide poner la propiedad Text al control HyperLink porque después no lo veras

Código Javascript:
Ver original
  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  2. {
  3.  if (e.Row.RowType == DataControlRowType.DataRow)
  4.  {
  5.   string KeyNombre = GridView1.DataKeys[e.Row.RowIndex].Values["Archivo"].ToString();  
  6.   HyperLink nombre = e.Row.FindControl("nombreArchivo") as HyperLink;
  7.   nombre.Text = "Prueba";
  8.   nombre.NavigateUrl = "~/Archivos/" + KeyNombre;              
  9.  }
  10. }

Y si quieres trabajarlo de otra manera puedes chequear estos link:

Adding a HyperlinkField control to the GridView.
[ASP.NET] GridView – Edición Empleados.
[ASP.NET] Añadir un campo de tipo HyperLink a un GridView.
Using Hyperlink columns in GridView.
  #8 (permalink)  
Antiguo 22/11/2012, 14:56
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Respuesta: Abrir un archivo previamente subido por el usuario

Hola de nuevo gracias por tu respuesta al fin lo hice como el link que me proporcionaste el de [ASP.NET] Añadir un campo de tipo HyperLink a un GridView. que me parecio mas sencillo y no me ponia tantos problemas jeje

Pero ahora lo que sucede es que bueno me muestra como en el ejemplo el nombre del archivo como un hiperlink, pero al darle click aparece el siguiente error:

Código ASP:
Ver original
  1. Error de servidor en la aplicación '/'.
  2. --------------------------------------------------------------------------------
  3.  
  4. No se encuentra el recurso.
  5. Descripción: HTTP 404. El recurso que está buscando (o una de sus dependencias) se puede haber quitado, haber cambiado de nombre o no estar disponible temporalmente. Revise la dirección URL siguiente y asegúrese de que está escrita correctamente.
  6.  
  7. Dirección URL solicitada: /PaginaWeb/cedula.jpg
  8.  
  9.  
  10. --------------------------------------------------------------------------------
  11. Información de versión: Versión de Microsoft .NET Framework:4.0.30319; Versión ASP.NET:4.0.30319.1

y ps no se si sea que tengo un error cuando guardo el archivo, ya que lo guardo en una carpeta llamada Archivo, pero como tal en visual studio no se visualiza el contenido de esa carpeta, si no q solo aparece el archivo guardado cuando abro la carpeta en la que está guardado el proyecto.
Mira este es el código con el que guardo el archivo

Código C#:
Ver original
  1. //UPLOAD DE ARCHIVOS
  2.             //Sentencia que verifica que el archivo se haya subido correctamente
  3.             if (IsPostBack)
  4.             {
  5.                 Boolean fileOK = false;
  6.                 String path = Server.MapPath("~/Archivos/");
  7.                 //Se indica las extensiones de archivos permitidas
  8.                 if (FileUpload1.HasFile)
  9.                 {
  10.                     String fileExtension =
  11.                         System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
  12.                     String[] allowedExtensions = { ".pdf", ".doc", ".docx", ".jpeg", ".jpg" };
  13.                     for (int i = 0; i < allowedExtensions.Length; i++)
  14.                     {
  15.                         if (fileExtension == allowedExtensions[i])
  16.                         {
  17.                             fileOK = true;
  18.                         }
  19.                     }
  20.                 }
  21.  
  22.                 if (fileOK)
  23.                 {
  24.                     try
  25.                     {
  26.                         FileUpload1.PostedFile.SaveAs(path
  27.                             + FileUpload1.FileName);
  28.                         lblArchivo.Text = "Archivo guardado!";
  29.                     }
  30.                     catch (Exception )
  31.                     {
  32.                         lblArchivo.Text = "El archivo no ha podido ser cargado.";
  33.                     }
  34.                 }
  35.                 else
  36.                 {
  37.                     lblArchivo.Text = "Tipo de archivo no válido.";
  38.                 }
  39.             }
  #9 (permalink)  
Antiguo 22/11/2012, 15:37
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Abrir un archivo previamente subido por el usuario

Por que no lo haces de esta manera en la variable "path" que tienes:

Código Javascript:
Ver original
  1. String path = Server.MapPath("~/Archivos");

Y cuando lo vayas a guardar guárdalo de esta manera:

Código Javascript:
Ver original
  1. string strFileName;
  2. string strFolder;
  3. string strFilePath;
  4.  
  5. strFileName = FileUpload1.FileName;
  6. strFilePath = path + "\\" + strFileName;
  7. FileUpload1.PostedFile.SaveAs(strFilePath);

Prueba lo guardándolo de este modo para ver como te va y me dices.
  #10 (permalink)  
Antiguo 22/11/2012, 18:24
Avatar de jesmi89  
Fecha de Ingreso: agosto-2008
Ubicación: Bello - Antioquia
Mensajes: 47
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Abrir un archivo previamente subido por el usuario

Hola puse como me indicaste pero igual sale el mismo error, y en verdad no entiendo porque el archivo no es visible en la carpeta cuando se esta en el entorno de Visual
  #11 (permalink)  
Antiguo 23/11/2012, 07:25
Avatar de DeivisAndres  
Fecha de Ingreso: febrero-2012
Ubicación: Colombia
Mensajes: 305
Antigüedad: 12 años, 2 meses
Puntos: 41
Respuesta: Abrir un archivo previamente subido por el usuario

No te preocupes a mi me pasa lo mismo, pero a un así a mi me funciona. Pero el error te muestra este: Dirección URL solicitada: /PaginaWeb/cedula.jpg pero entonces lo que quieres ver es una imagen o un archivo PDF ?

A un así por que no me muestras el código donde tratas de visualizar el archivo por medio del Hyperlink en el gridview para ver como lo estas llamando

Por que ahora que veo tu guardas varios tipos de archivo entonces en algún lado debes guardar el nombre para saber el tipo de archivo que quieres ya que no solo es de imagen si no de varios, entonces podrías intentar con guardar la ruta total del archivo que estás guardando en la BD para luego llamarlo y mostrarlo en el gridview, como asi ? de esta manera, la parte que te di puedes modificar de esta manera:

Código Javascript:
Ver original
  1. string strFileName;
  2. string strFolder;
  3. string strFilePath;
  4.  
  5. strFileName = FileUpload1.PostedFile.FileName; // Modifica esta parte
  6. strFilePath = path + "\\" + strFileName; // Y guardas esta variable en la BD
  7. FileUpload1.PostedFile.SaveAs(strFilePath);

Entonces coges la variable "strFilePath" y la almacenas en la BD y cuando vayas a listar los datos en el gridview se pondrá en el Hyperlink la dirección del archivo. espero y me hayas entendido ?

Última edición por DeivisAndres; 23/11/2012 a las 07:37

Etiquetas: c#, fileupload, 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 11:08.