Descargar Archivos de Internet

22/07/2004 - 17:40 por Luis Márquez | Informe spam
Hola
Tengo una aplicación en Visual Basic .Net en WEB FORM a
la cual necesito

- Leer archivos de un directorio ( c:\*.txt) y mostrarlos
en un DataGRID

- De ese DataGrid, Poder descargar el archivo a una
unidad que me solicite ( f:\temp )

- Tambien busco si existe para WEB FORM el equivalente a
OpenFileDialog, donde me dija de donde abrir el archivo o
guardarlo

De antemano Muchas Gracias

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
22/07/2004 - 17:58 | Informe spam
- Leer archivos de un directorio ( c:\*.txt) y mostrarlos
en un DataGRID



¿El archivo esta en el servidor o en el cliente? Si esta en el servidor
entonces simplemente abrelo y cargalo en el datagrid (como hacer esto ultimo
depende de como sea el archivo). Si esta en el cliente entonces tienes que
hacer que el cliente lo suba al servidor.

- De ese DataGrid, Poder descargar el archivo a una
unidad que me solicite ( f:\temp )

- Tambien busco si existe para WEB FORM el equivalente a
OpenFileDialog, donde me dija de donde abrir el archivo o
guardarlo



No estas pensando como para una aplicacion web. Cuando haces una aplicacion
web debes tener en cuenta que no tienes control ni acceso a la maquina
cliente y por lo tanto no te sirve enviarle al servidor una ruta de la
maquina del cliente porque no vas a poder acceder a ella desde el servidor.
Simplemente coloca un enlace al archivo en la pagina. En la maquina cliente
el navegador le preguntara al usuario donde quiere guardarlo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Anonimo
26/07/2004 - 18:37 | Informe spam
Muchas Gracias por tomarte la molestia de aclararmente,
ya que todavia tengo algunas dudas sobre Web Form y
Windows form,

Yo requiero de una aplicación Web ( para accesar desde
cualquier equipo que tenga Intenet ):

- Donde pueda SUBIR archivos de mi equipo (C:\temp\*.txt
por ejemplo ) AL SERVIDOR (que es donde estara cargada la
aplicacion web )

- Y tambien una pantalla donde vea esos archivos ya
cargados con opcion a descargarlos ( Me comentas que
coloque un enlace al archivo, pero ¿ No entiendo como
hacer esto ? )

Me ayudarias muchisimo aclarandome estas dudad y/o
dandome las instrucciones para realizar esta aplicación

de antemano muchas gracias

- Leer archivos de un directorio ( c:\*.txt) y




mostrarlos
en un DataGRID



¿El archivo esta en el servidor o en el cliente? Si esta


en el servidor
entonces simplemente abrelo y cargalo en el datagrid


(como hacer esto ultimo
depende de como sea el archivo). Si esta en el cliente


entonces tienes que
hacer que el cliente lo suba al servidor.

- De ese DataGrid, Poder descargar el archivo a una
unidad que me solicite ( f:\temp )

- Tambien busco si existe para WEB FORM el equivalente




a
OpenFileDialog, donde me dija de donde abrir el




archivo o
guardarlo



No estas pensando como para una aplicacion web. Cuando


haces una aplicacion
web debes tener en cuenta que no tienes control ni


acceso a la maquina
cliente y por lo tanto no te sirve enviarle al servidor


una ruta de la
maquina del cliente porque no vas a poder acceder a ella


desde el servidor.
Simplemente coloca un enlace al archivo en la pagina. En


la maquina cliente
el navegador le preguntara al usuario donde quiere


guardarlo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


.

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
26/07/2004 - 19:38 | Informe spam
wrote:
Muchas Gracias por tomarte la molestia de aclararmente,
ya que todavia tengo algunas dudas sobre Web Form y
Windows form,

Yo requiero de una aplicación Web ( para accesar desde
cualquier equipo que tenga Intenet ):

- Donde pueda SUBIR archivos de mi equipo (C:\temp\*.txt
por ejemplo ) AL SERVIDOR (que es donde estara cargada la
aplicacion web )



Para subir un archivo lo primero que tienes que hacer es decirle al
formulario que debe usar codificacion multipart/form-data para enviar los
datos al servidor. Luego tienes que crear un <INPUT> de tipo file en el que
el usuario seleccione el archivo a subir. Y por ultimo un boton para enviar
el formulario. La pagina aspx te quedaria asi:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb"
Inherits="WebPrueba.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Subir archivo</title>
</head>
<body>
<form id="Form1" method="post" runat="server"
enctype="multipart/form-data">
<input type="file" runat="server" id="archivo"><br>
<asp:button id="subir" runat="server" text="Subir archivo"></asp:button>
</form>
</body>
</html>

El control file dispone de una propiedad PostedFile que devuelve un objeto
HttpPostedFile que contiene el archivo subido. Entonces en el event Click
del boton usas esta propiedad para guardar el archivo en el servidor:

Private Sub subir_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles subir.Click

Dim nombre As String = IO.Path.GetFileName(archivo.PostedFile.FileName)

archivo.PostedFile.SaveAs("c:\archivos\" & nombre)

End Sub

- Y tambien una pantalla donde vea esos archivos ya
cargados con opcion a descargarlos ( Me comentas que
coloque un enlace al archivo, pero ¿ No entiendo como
hacer esto ? )



Para esto depende un poco de como quieras mostrar los archivos y donde
esten. Si estan en una carpeta virtual del servidor puede listar los
archivos y colocar un enlace directo al archivo. Si no, puedes por ejemplo
listar los archivos en un listbox y usar un boton para descargar el archivo
seleccionado usando codigo desde el webform. Extendiendo el HTML anterior
agrego un ListBox y otro boton:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb"
Inherits="WebPrueba.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Subir y Descargar Archivos</title>
</head>
<body>
<form id="Form1" method="post" runat="server"
enctype="multipart/form-data">
<p>
<asp:listbox id="archivos" runat="server"></asp:listbox>&nbsp;
<asp:button id="descargar" runat="server"
text="Descargar"></asp:button><br>
</p>
<p>
<input type="file" runat="server" id="archivo">&nbsp;
<asp:button id="subir" runat="server" text="Subir
archivo"></asp:button></p>
</form>
</body>
</html>

Luego desde el evento Click del boton envias el archivo usando el objeto
Response:

Private Sub descargar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles descargar.Click

' Creo un objeto FileInfo con el archivo seleccionado
Dim fi As New IO.FileInfo(archivos.SelectedValue)

' Borro la respuesta actual en caso de que haya algo.
' Solo queremos el contenido del archivo en la respuesta.
Response.Clear()

' Seteo el tipo de archivo como binario
Response.ContentType = "application/octet-stream"

' Agrego en el encabezado el tamaño del archivo
' El explorador usa este tamaño para calcular
' el avance de la descarga.
Response.AddHeader("Content-Length", fi.Length.ToString)

' Agrego en el encabezado el nombre del archivo.
' El explorador usa este nombre en lugar del de la
' pagina al mostrar la ventana de grabar archivo.
Response.AddHeader("Content-Disposition", "filename=" & fi.Name)

' Escribo el archivo en la respuesta del servidor
Response.WriteFile(fi.FullName)

' Finalizo la respuesta. No se procesa mas nada.
Response.End()

End Sub

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Luis Marquez Martinez
26/07/2004 - 23:46 | Informe spam
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????.???????????.???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????.??????????????????????.??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????..???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????.???????????.???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????.??????.????????????????????????????????????????????.????????????????????????????????.???????????????????????????????????????????????.????????????????????????????????????.??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????..????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida