herramienta web para subir ficheros de gran tamaño a un servidor

29/10/2008 - 11:07 por [Juanjo] | Informe spam
Hola gente:

Quiero hacer una herramienta web para subir ficheros de gran tamaño,
unos 100 MB, pero desconozco si en asp pasa como con php, que el tamaño
máximo del fichero que puedes subir viene determinado por una variable de
configuración y tambien si depende del tiempo máximo que puede procesar el
servidor la petición.

Otra alternativa que se me habia ocurrido es subir los ficheros por ftp,
pero ¿es posible levantar una conexion ftp desde una pagina web?

Si alguien se le ocurre otra idea, se agradece.

Un saludo

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
29/10/2008 - 11:34 | Informe spam
"[Juanjo]" wrote in message
news:
Quiero hacer una herramienta web para subir ficheros de gran tamaño,
unos 100 MB, pero desconozco si en asp pasa como con php, que el tamaño
máximo del fichero que puedes subir viene determinado por una variable de
configuración y tambien si depende del tiempo máximo que puede procesar el
servidor la petición.



Hay un límite por defecto de 4 MB según la versión, y el timeout (cuando
compilation...debug es false) es de 110 segundos . Se puede modificar
cambiando los valores dentro del <httpRuntime.../> en el web.config.

http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx
http://msdn.microsoft.com/es-es/lib...79405.aspx
Respuesta Responder a este mensaje
#2 [Juanjo]
30/10/2008 - 18:47 | Informe spam
Precisamente, por eso quiero hacer un "algo", no una pagina web o algo que
use un servidor web, porque va a
estar muy condicionado por el tamaño del fichero, timeout, velocidad de la
conexion, etc.



"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"[Juanjo]" wrote in message
news:
Quiero hacer una herramienta web para subir ficheros de gran tamaño,
unos 100 MB, pero desconozco si en asp pasa como con php, que el tamaño
máximo del fichero que puedes subir viene determinado por una variable de
configuración y tambien si depende del tiempo máximo que puede procesar
el servidor la petición.



Hay un límite por defecto de 4 MB según la versión, y el timeout
(cuando compilation...debug es false) es de 110 segundos . Se puede
modificar cambiando los valores dentro del <httpRuntime.../> en el
web.config.

http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx
http://msdn.microsoft.com/es-es/lib...79405.aspx

Respuesta Responder a este mensaje
#3 [Juanjo]
31/10/2008 - 11:48 | Informe spam
Gracias,

Lo del FTP lo tenia en cuenta, lo que no he probado y no se si se puede
es hacer via web un cliente FTP.

Lo que necesito es que desde una web el cliente pueda seleccionar un
archivo y mandarlo, aunque internamente
realizale la conexion via FTP o con alguna otra cosa, que no tenga las
limitaciones de tiempo o tamaño.

Gracias.



"Julián Mejio" escribió en el mensaje de noticias
news:
Pues nada más esta semana estoy desarrollando un "algo" que me permita subir
archivos a un servidor FTP con sólo un clic (para dummies) y no complicarse
la
vida con otras cosas. Si te sirve, te dejo el código que usé para la
conexión
FTP. Igual te digo que es algo muy sencillo, y estoy en proceso de mejoras,
como
más control de excepciones y otras cositas que se me escapan. Por lo menos
con
esto puedes darte una idea.

[Juanjo] wrote:
Precisamente, por eso quiero hacer un "algo", no una pagina web o algo
que use un servidor web, porque va a
estar muy condicionado por el tamaño del fichero, timeout, velocidad de
la conexion, etc.



"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"[Juanjo]" wrote in message
news:
Quiero hacer una herramienta web para subir ficheros de gran
tamaño, unos 100 MB, pero desconozco si en asp pasa como con php, que
el tamaño máximo del fichero que puedes subir viene determinado por
una variable de configuración y tambien si depende del tiempo máximo
que puede procesar el servidor la petición.



Hay un límite por defecto de 4 MB según la versión, y el timeout
(cuando compilation...debug es false) es de 110 segundos . Se puede
modificar cambiando los valores dentro del <httpRuntime.../> en el
web.config.

http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx
http://msdn.microsoft.com/es-es/lib...79405.aspx











using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace abcdsign.Internet
{
/// <summary>
/// Representa una conexión FTP a los servidores.
/// </summary>
public class FTP
{
/// <summary>
/// Contiene la conexión al srvidor FTP.
/// </summary>
private FtpWebRequest conexion;
/// <summary>
/// Contiene el nombre de usuario de la conexión.
/// </summary>
private string usuario;
/// <summary>
/// Contiene la clave de la conexión.
/// </summary>
private string clave;
/// <summary>
/// Obtiene el usuario de la conexión.
/// </summary>
public string Usuario
{
get { return usuario; }
private set { usuario = value; }
}
/// <summary>
/// Establece una nueva petición de transferencia por FTP.
/// </summary>
/// <param name="Usuario">Nombre de usuario de la conexión.</param>
/// <param name="Clave">Clave de autenticación del usuario.</param>
public FTP(string Usuario, string Clave)
{
EstablecerCredenciales(Usuario, Clave);
}
/// <summary>
/// Establece una nueva petición de transferencia por FTP.
/// </summary>
public FTP()
{
}
/// <summary>
/// Establece las credenciales que se usarà¡n como autenticación.
/// </summary>
/// <param name="Usuario">Usuario de la conexión.</param>
/// <param name="Clave">Clave de autenticación.</param>
public void EstablecerCredenciales(string Usuario, string Clave)
{
this.Usuario = Usuario;
clave = Clave;
}
/// <summary>
/// Subre un archivo al servidor FTP.
/// </summary>
/// <param name="Archivo">Ruta al archivo.</param>
/// <param name="Nombre">Nombre con el que se va a subir el
archivo.</param>
/// <exception cref="ArchivoException">Se arroja cuando no se puede
tener acceso a la información del archivo.</exception>
/// <exception cref="FTPConexionException">Se arroja cuando no se ha
podido establecer la conexión al servidor FTP.</exception>
public void SubirArchivo(string Archivo,string Nombre)
{
FileInfo informacionArchivo;
int pesoArchivo;
try
{
informacionArchivo = new FileInfo(Archivo);
pesoArchivo = (int)informacionArchivo.Length;
}
catch
{
throw new ArchivoException("Ha ocurrido un error al tratar
de acceder a la información del archivo.");
}
Nombre = (Nombre == null) ? informacionArchivo.Name : Nombre;
try
{
conexion =
(FtpWebRequest)WebRequest.Create(String.Format("ftp://servidorftp/{0}",
Nombre));
}
catch
{
throw new FTPConexionException("No se puede conectar al
servidor. Compruebe que esté conectado a internet.");
}
conexion.Credentials = new NetworkCredential(Usuario, clave);
conexion.Method = WebRequestMethods.Ftp.UploadFile;
conexion.ContentLength = pesoArchivo;
BinaryReader lectorBinario = new BinaryReader(File.Open(Archivo,
FileMode.Open));
byte[] contenidoArchivo = lectorBinario.ReadBytes(pesoArchivo);
lectorBinario.Close();
Stream streamFTP;
try
{
streamFTP = conexion.GetRequestStream();
}
catch
{
throw new FTPConexionException("Ha ocurrido un error al
intentar conectarse al servidor. Compruebe que esté conectado a internet");
}
streamFTP.Write(contenidoArchivo, 0, pesoArchivo);
streamFTP.Close();
FtpWebResponse respuesta =
(FtpWebResponse)conexion.GetResponse();
if (respuesta.StatusCode != FtpStatusCode.CommandOK)
throw new FTPConexionException(String.Format("Ha ocurrido un
error al tratar de colocar el archivo al servidor: {0}",
respuesta.StatusDescription));
}
public void SubirArchivo(string Archivo)
{
SubirArchivo(Archivo, null);
}
}
}
Respuesta Responder a este mensaje
#4 Julián Mejio
31/10/2008 - 14:38 | Informe spam
En efecto sí se puede hacer que el servidor maneje la conexión FTP internamente,
lo que pasa es que para enviar el archivo, inevitablemente el cliente debe
"subirlo" al servidor, y luego éste pueda hacer con el archivo lo que desee,
como enviarlo por FTP a otra parte o algo así. Pero el paso fundamental es la
subida del archivo por parte del cliente, y ahí entra el límite de ejecución del
script, el tamaño máximo permitido, y otras cosas.

[Juanjo] wrote:
Gracias,

Lo del FTP lo tenia en cuenta, lo que no he probado y no se si se
puede es hacer via web un cliente FTP.

Lo que necesito es que desde una web el cliente pueda seleccionar un
archivo y mandarlo, aunque internamente
realizale la conexion via FTP o con alguna otra cosa, que no tenga las
limitaciones de tiempo o tamaño.

Gracias.



"Julián Mejio" escribió en el mensaje de
noticias news:
Pues nada más esta semana estoy desarrollando un "algo" que me permita
subir
archivos a un servidor FTP con sólo un clic (para dummies) y no
complicarse la
vida con otras cosas. Si te sirve, te dejo el código que usé para la
conexión
FTP. Igual te digo que es algo muy sencillo, y estoy en proceso de
mejoras, como
más control de excepciones y otras cositas que se me escapan. Por lo
menos con
esto puedes darte una idea.

[Juanjo] wrote:
Precisamente, por eso quiero hacer un "algo", no una pagina web o algo
que use un servidor web, porque va a
estar muy condicionado por el tamaño del fichero, timeout, velocidad de
la conexion, etc.



"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"[Juanjo]" wrote in message
news:
Quiero hacer una herramienta web para subir ficheros de gran
tamaño, unos 100 MB, pero desconozco si en asp pasa como con php, que
el tamaño máximo del fichero que puedes subir viene determinado por
una variable de configuración y tambien si depende del tiempo máximo
que puede procesar el servidor la petición.



Hay un límite por defecto de 4 MB según la versión, y el timeout
(cuando compilation...debug es false) es de 110 segundos . Se puede
modificar cambiando los valores dentro del <httpRuntime.../> en el
web.config.

http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx
http://msdn.microsoft.com/es-es/lib...79405.aspx












using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace abcdsign.Internet
{
/// <summary>
/// Representa una conexión FTP a los servidores.
/// </summary>
public class FTP
{
/// <summary>
/// Contiene la conexión al srvidor FTP.
/// </summary>
private FtpWebRequest conexion;
/// <summary>
/// Contiene el nombre de usuario de la conexión.
/// </summary>
private string usuario;
/// <summary>
/// Contiene la clave de la conexión.
/// </summary>
private string clave;
/// <summary>
/// Obtiene el usuario de la conexión.
/// </summary>
public string Usuario
{
get { return usuario; }
private set { usuario = value; }
}
/// <summary>
/// Establece una nueva petición de transferencia por FTP.
/// </summary>
/// <param name="Usuario">Nombre de usuario de la conexión.</param>
/// <param name="Clave">Clave de autenticación del usuario.</param>
public FTP(string Usuario, string Clave)
{
EstablecerCredenciales(Usuario, Clave);
}
/// <summary>
/// Establece una nueva petición de transferencia por FTP.
/// </summary>
public FTP()
{
}
/// <summary>
/// Establece las credenciales que se usarà¡n como autenticación.
/// </summary>
/// <param name="Usuario">Usuario de la conexión.</param>
/// <param name="Clave">Clave de autenticación.</param>
public void EstablecerCredenciales(string Usuario, string Clave)
{
this.Usuario = Usuario;
clave = Clave;
}
/// <summary>
/// Subre un archivo al servidor FTP.
/// </summary>
/// <param name="Archivo">Ruta al archivo.</param>
/// <param name="Nombre">Nombre con el que se va a subir el
archivo.</param>
/// <exception cref="ArchivoException">Se arroja cuando no se
puede tener acceso a la información del archivo.</exception>
/// <exception cref="FTPConexionException">Se arroja cuando no se
ha podido establecer la conexión al servidor FTP.</exception>
public void SubirArchivo(string Archivo,string Nombre)
{
FileInfo informacionArchivo;
int pesoArchivo;
try
{
informacionArchivo = new FileInfo(Archivo);
pesoArchivo = (int)informacionArchivo.Length;
}
catch
{
throw new ArchivoException("Ha ocurrido un error al
tratar de acceder a la información del archivo.");
}
Nombre = (Nombre == null) ? informacionArchivo.Name : Nombre;
try
{
conexion =
(FtpWebRequest)WebRequest.Create(String.Format("ftp://servidorftp/{0}",
Nombre));
}
catch
{
throw new FTPConexionException("No se puede conectar al
servidor. Compruebe que esté conectado a internet.");
}
conexion.Credentials = new NetworkCredential(Usuario, clave);
conexion.Method = WebRequestMethods.Ftp.UploadFile;
conexion.ContentLength = pesoArchivo;
BinaryReader lectorBinario = new
BinaryReader(File.Open(Archivo, FileMode.Open));
byte[] contenidoArchivo = lectorBinario.ReadBytes(pesoArchivo);
lectorBinario.Close();
Stream streamFTP;
try
{
streamFTP = conexion.GetRequestStream();
}
catch
{
throw new FTPConexionException("Ha ocurrido un error al
intentar conectarse al servidor. Compruebe que esté conectado a
internet");
}
streamFTP.Write(contenidoArchivo, 0, pesoArchivo);
streamFTP.Close();
FtpWebResponse respuesta =
(FtpWebResponse)conexion.GetResponse();
if (respuesta.StatusCode != FtpStatusCode.CommandOK)
throw new FTPConexionException(String.Format("Ha ocurrido
un error al tratar de colocar el archivo al servidor: {0}",
respuesta.StatusDescription));
}
public void SubirArchivo(string Archivo)
{
SubirArchivo(Archivo, null);
}
}
}

Respuesta Responder a este mensaje
#5 [Juanjo]
03/11/2008 - 12:54 | Informe spam
Ok.

Tu sabes si se puede hacer un ftp con el interfaz web? (no se si es un
disparate lo que he escrito) o por fuerza tiene que ser una aplicacion de
escritorio?



"Julián Mejio" escribió en el mensaje de noticias
news:
En efecto sí se puede hacer que el servidor maneje la conexión FTP
internamente,
lo que pasa es que para enviar el archivo, inevitablemente el cliente debe
"subirlo" al servidor, y luego éste pueda hacer con el archivo lo que desee,
como enviarlo por FTP a otra parte o algo así. Pero el paso fundamental es
la
subida del archivo por parte del cliente, y ahí entra el límite de ejecución
del
script, el tamaño máximo permitido, y otras cosas.

[Juanjo] wrote:
Gracias,

Lo del FTP lo tenia en cuenta, lo que no he probado y no se si se puede
es hacer via web un cliente FTP.

Lo que necesito es que desde una web el cliente pueda seleccionar un
archivo y mandarlo, aunque internamente
realizale la conexion via FTP o con alguna otra cosa, que no tenga las
limitaciones de tiempo o tamaño.

Gracias.



"Julián Mejio" escribió en el mensaje de noticias
news:
Pues nada más esta semana estoy desarrollando un "algo" que me permita
subir
archivos a un servidor FTP con sólo un clic (para dummies) y no
complicarse la
vida con otras cosas. Si te sirve, te dejo el código que usé para la
conexión
FTP. Igual te digo que es algo muy sencillo, y estoy en proceso de
mejoras, como
más control de excepciones y otras cositas que se me escapan. Por lo menos
con
esto puedes darte una idea.

[Juanjo] wrote:
Precisamente, por eso quiero hacer un "algo", no una pagina web o algo
que use un servidor web, porque va a
estar muy condicionado por el tamaño del fichero, timeout, velocidad de
la conexion, etc.



"Alberto Poblacion"
escribió en el mensaje de noticias
news:%
"[Juanjo]" wrote in message
news:
Quiero hacer una herramienta web para subir ficheros de gran
tamaño, unos 100 MB, pero desconozco si en asp pasa como con php, que
el tamaño máximo del fichero que puedes subir viene determinado por
una variable de configuración y tambien si depende del tiempo máximo
que puede procesar el servidor la petición.



Hay un límite por defecto de 4 MB según la versión, y el timeout
(cuando compilation...debug es false) es de 110 segundos . Se puede
modificar cambiando los valores dentro del <httpRuntime.../> en el
web.config.

http://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx
http://msdn.microsoft.com/es-es/lib...79405.aspx












using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace abcdsign.Internet
{
/// <summary>
/// Representa una conexión FTP a los servidores.
/// </summary>
public class FTP
{
/// <summary>
/// Contiene la conexión al srvidor FTP.
/// </summary>
private FtpWebRequest conexion;
/// <summary>
/// Contiene el nombre de usuario de la conexión.
/// </summary>
private string usuario;
/// <summary>
/// Contiene la clave de la conexión.
/// </summary>
private string clave;
/// <summary>
/// Obtiene el usuario de la conexión.
/// </summary>
public string Usuario
{
get { return usuario; }
private set { usuario = value; }
}
/// <summary>
/// Establece una nueva petición de transferencia por FTP.
/// </summary>
/// <param name="Usuario">Nombre de usuario de la
conexión.</param>
/// <param name="Clave">Clave de autenticación del
usuario.</param>
public FTP(string Usuario, string Clave)
{
EstablecerCredenciales(Usuario, Clave);
}
/// <summary>
/// Establece una nueva petición de transferencia por FTP.
/// </summary>
public FTP()
{
}
/// <summary>
/// Establece las credenciales que se usarà¡n como autenticación.
/// </summary>
/// <param name="Usuario">Usuario de la conexión.</param>
/// <param name="Clave">Clave de autenticación.</param>
public void EstablecerCredenciales(string Usuario, string Clave)
{
this.Usuario = Usuario;
clave = Clave;
}
/// <summary>
/// Subre un archivo al servidor FTP.
/// </summary>
/// <param name="Archivo">Ruta al archivo.</param>
/// <param name="Nombre">Nombre con el que se va a subir el
archivo.</param>
/// <exception cref="ArchivoException">Se arroja cuando no se puede
tener acceso a la información del archivo.</exception>
/// <exception cref="FTPConexionException">Se arroja cuando no se
ha podido establecer la conexión al servidor FTP.</exception>
public void SubirArchivo(string Archivo,string Nombre)
{
FileInfo informacionArchivo;
int pesoArchivo;
try
{
informacionArchivo = new FileInfo(Archivo);
pesoArchivo = (int)informacionArchivo.Length;
}
catch
{
throw new ArchivoException("Ha ocurrido un error al tratar
de acceder a la información del archivo.");
}
Nombre = (Nombre == null) ? informacionArchivo.Name : Nombre;
try
{
conexion =
(FtpWebRequest)WebRequest.Create(String.Format("ftp://servidorftp/{0}",
Nombre));
}
catch
{
throw new FTPConexionException("No se puede conectar al
servidor. Compruebe que esté conectado a internet.");
}
conexion.Credentials = new NetworkCredential(Usuario, clave);
conexion.Method = WebRequestMethods.Ftp.UploadFile;
conexion.ContentLength = pesoArchivo;
BinaryReader lectorBinario = new
BinaryReader(File.Open(Archivo, FileMode.Open));
byte[] contenidoArchivo = lectorBinario.ReadBytes(pesoArchivo);
lectorBinario.Close();
Stream streamFTP;
try
{
streamFTP = conexion.GetRequestStream();
}
catch
{
throw new FTPConexionException("Ha ocurrido un error al
intentar conectarse al servidor. Compruebe que esté conectado a
internet");
}
streamFTP.Write(contenidoArchivo, 0, pesoArchivo);
streamFTP.Close();
FtpWebResponse respuesta =
(FtpWebResponse)conexion.GetResponse();
if (respuesta.StatusCode != FtpStatusCode.CommandOK)
throw new FTPConexionException(String.Format("Ha ocurrido
un error al tratar de colocar el archivo al servidor: {0}",
respuesta.StatusDescription));
}
public void SubirArchivo(string Archivo)
{
SubirArchivo(Archivo, null);
}
}
}

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida