CLR: .Net / Mono / Boo / Otros CLR > ASP .NET
Componente Aspupload
Moy:
En el trabajo me han dicho que utilice un componente de ASP llamado ASPUpload que sirve para hacer más facil subir imagenes a un servidor. Por poner un ejemplo, podría utilizarlo para pedir al usuario una imagen que quiera usar como avatar en un foro, comprobar que no sea demasiado grande y guardarla en la carpeta que yo quiera.
El caso es que como no tengo ni idea de ASP y de ASP.NEt estoy aun muy verde, no entiendo muy bien lo que el manual trata de decirme y me parece que son tan solo ejemplos de ASP, ya que al copiarlos y pegarlos en mi proyecto revientan por todas partes o se ejecutan sin hacer absolutamente nada.
Os pongo un ejemplo:
--- Código: Text --- <HTML><BODY BGCOLOR="#FFFFFF"> <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="cargar.asp"><INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR><INPUT TYPE=FILE SIZE=60 NAME="FILE2"><BR><INPUT TYPE=FILE SIZE=60 NAME="FILE3"><BR><INPUT TYPE=SUBMIT VALUE="Upload!"></FORM> </BODY></HTML> Esto se supone que iría en la parte HTML. Todos los sitios donde he mirado insisten en que es obligatorio poner el ENCTYPE con lo de multipart para que en vez del nombre del fichero, recoga el fichero en si. ¿Seguro que funciona eso? ¿Se puede meter un Form dentro del form que ya tengo hecho o vale con ponerle el ENCTYPE al que engloba todo mi formulario?
El caso es que yo no trabajaría con un fichero "cargar.asp", asi que ya empiezan los problemas.
En dicho fichero supuestamente va este código.
--- Código: Text --- <HTML><BODY> <%Set Upload = Server.CreateObject("Persits.Upload.1")Count= Upload.Save("d:\xvrt\midominio.com\html\upload")%><% = Count %> ficheros subidos. </BODY></HTML> ¿Otro codigo Html? No termino de pillarlo. ¿Como se supone que podría convertir eso en codigo .Net?
Por ahí dicen que es posible, aunque no dicen como. Lo malo es que como es un componente que hay que instalar aparte (y que no es gratuito), la peña en general habrá pasado 27mil kilos de usarla y se habrá hecho sus scripts de petición de imagenes con javascript, que es mas raro que un perro verde.
Si hubiese alguien que sabe como usar en ASP.Net esta cosa, le agradecería que me echase un cable.
PD: Tampoco me vayais a decir "Si, es posible usarlo con ASP.Net" y no me digais siquiera donde encontrar un ejemplo. Hm... Aunque sería peor si no me dijerais absolutamente nada. :(
Güorker:
Hola Moy,
Joder que preguntitas haces!! jaja
Vamos a ver. Parece ser que el AspUpload ese es algo programado en asp puro, por eso son así los trozos de código que escribes.
El primer trozo de código es HTML puro que tiene 3 campos de tipo file para subirlos al servidor. Estas en lo cierto con lo del enctype, eso es así y no hay vuelta atras. Por otro lasdo en tu ejemplo al action del Form es "cargar.asp". Esa página se ejecuta en el servidor, y me imagino que es la que se encarga de subir los archivos y que corresponde a tu 2º trozo de código.
En este punto te digo que la forma de trabajar en asp es meter trozos de código VB entre el HTML dentro de etiquetas <% y %>.
En ASP.NET tambien se puede programar así, pero supongo que eso no te interesa.
Bueno, cambiando de tercio te diré que para hacer lo mismo en ASP.NET... será posible.
¿Como?
Supongo que el AspUpload será una dll o algo, ¿no? Lo digo porque en tu ejemplo tienes esto:
--- Código: Text --- Set Upload = Server.CreateObject("Persits.Upload.1")
Entonces si es una dll, la puedes registrar en tu proyecto ASP.NET y despues crear instancias de la clase, y asi poder usar sus metodos como el "Save".
No se si te he ayudado en algo, pero sea lo que sea sigue preguntando, a ver si podemos ayudarte.
Saludos y siento la chapa que te he soltado.
carlos_lue:
hola a todos:
yo he utilizado esto para subir archivos al servidor pero tengo un problema, que a la hora de intentar subir archivos de mas de 4mb aproximadamente el programa truena, ya he intentado con excepciones pero no logro capturar la excepcion. bueno mi pregunta seria si alguien sabe como validar que el archivo que se va a subir no sobre pase el limite o mejor aun que me permita subir archivos mas grandes, bueno es todo por hoy, un saludo a todos.
--- Citar ---Dim upload, fsys, carpeta, fs, archivo, extension, strsave As Object
Dim ext As String
Dim dest As System.IO.Directory
Session("usuario") = 1
carpeta = Session("usuario")
carpeta = Trim(carpeta)
If Not dest.Exists(Server.MapPath("\grafica\upload\" & carpeta)) Then
dest.CreateDirectory(Server.MapPath("\grafica\upload\" & carpeta))
End If
If InStr(browser.PostedFile.FileName, ".") <> 0 Then
ext = Mid(browser.PostedFile.FileName, InStr(browser.PostedFile.FileName, "."))
If Trim(ext) <> ".txt" Then
Response.Write("Imposible enviar este tipo de archivo.<br>" & _
"Solo se permiten archivos con extension .txt")
Exit Sub
End If
End If
Dim Destino As String = Server.MapPath("\grafica\upload\" & carpeta & "\" & _
System.IO.Path.GetFileName(browser.PostedFile.FileName))
browser.PostedFile.SaveAs(Destino)
Response.Write("Su archivo ha sido cargado en : <b>" & Destino & _
"</b><br>Tamaño: " & browser.PostedFile.ContentLength() & " bytes.")
End Sub
--- Fin de la cita ---
Moy:
Hm... ¿Eso es también hecho con el ASPUpload?
Es que lo que has puesto no se le parece en nada y resulta que con el AspUpload hay una foma muy sencilla de restringir el tamaño de los ficheros (aunque yo necesitaría primero saber como funciona lo básico para poder usarlo)
A ver... Según el manual del AspUpload deberías usar este código.
--- Código: Text --- <HTML><BODY><%Set Upload = Server.CreateObject("Persits.Upload") ' Limita e ltamaño del fichero en 50Kb, lanzando una excepcion si es más grandeUpload.SetMaxSize 50000, True ' Captura todas las excepciones para que controles los mensajes de errorOn Error Resume Next 'Lo mas "sencillo", cargar el fichero ¿Com puñetas haran que funcione?Upload.Save "c:\upload" ' 8 es el numero que te devuelve la excepción de "fichero demasiado grande"If Err.Number = 8 Then Response.Write "Tu fichero es demasiado grande. Usa otro o déjame tranquilo."Else If Err <> 0 Then Response.Write "Ha ocurrido un error: " & Err.Description Else Response.Write "¡Por fin! ¡Funcionó!" End IfEnd If%> </BODY></HTML> Qué facil lo pintan...
A mi me gustaría saber como se supone que el Upload.save consigue los datos del fichero que has elegido. ¿Los adivina por la cara? ¿Los captura por ósmosis?
Es que en ningun momento se pasa parametro alguno ni se usan los identificadores del los imput. ¿Como quieren que funcione eso?
Y sin embargo funciona, porque he visto ejemplos ya hechos (desgraciadamente solo en ASP y C#) y tiene una pinta inmejorable. Te puedes crear un tumbnail a la escala que te de la gana, aplicarle un filtro, rotarlo y todo con apenas 20 lineas de código.
Tengo que averiguar como lo hacen... :ph34r:
carlos_lue:
hola lo mio es hecho utilizando el componente System.Web.UI.HtmlControls.HtmlInputFile
el problema que tengo es que no se como validar el tamaño del archivo y a parte no me cacha las excepciones.
ejemplo:
try
browser.PostedFile.SaveAs(Destino)
Response.Write("Su archivo ha sido cargado en : <b>" & Destino & _
"</b><br>Tamaño: " & browser.PostedFile.ContentLength() & " bytes.")
catch E as Exception
response.write("error " & E.Message())
end try
me deberia cachar la excepcion si el archivo no se puede guardar pero no lo hace lo unico que me muestra es esto:
--- Citar --- No se puede mostrar la página
La página Web solicitada no está disponible en este momento. Puede que el sitio Web tenga problemas técnicos o que necesite ajustar la configuración de su explorador.
--------------------------------------------------------------------------------
Pruebe lo siguiente:
Haga clic en el botón Actualizar o vuelva a intentarlo más tarde.
Si escribió la dirección de la página en la barra de direcciones, compruebe que esté escrita correctamente.
Para comprobar la configuración de su conexión, haga clic en el menú Herramientas y después en Opciones de Internet. Haga clic en Configuración en la ficha Conexiones. La configuración debe ser igual a la proporcionada por su administrador de red de área local (LAN) o su proveedor de servicios Internet (ISP).
Compruebe que la configuración de conexión a Internet esté siendo detectada. Puede establecer que Microsoft Windows examine la red y detecte automáticamente la configuración de conexión de red (si el administrador de red habilitó dicha configuración).
Haga clic en el menú Herramientas y después en Opciones de Internet.
En la ficha Conexiones, haga clic en Configuración LAN.
Seleccione Detectar automáticamente la configuración, y después haga clic en Aceptar.
Algunos sitios requieren una conexión de seguridad de 128 bits. Haga clic en el menú Ayuday luego en Acerca de Internet Explorer para determinar la capacidad de seguridad instalada.
Si está intentando obtener acceso a un sitio seguro, asegúrese de que es compatible con su configuración de seguridad. Haga clic en el menú Herramientas y después en Opciones de Internet. En la ficha Opciones avanzadas, desplácese a la sección de Seguridad y compruebe la configuración de SSL 2.0, SSL 3.0, TLS 1.0 y PCT 1.0.
Haga clic en el botón Atrás para intentar otro vínculo.
No se pudo encontrar el servidor o error DNS
Internet Explorer
--- Fin de la cita ---
Navegación
[#] Página Siguiente
Ir a la versión completa