• Sábado 21 de Septiembre de 2024, 09:56

Autor Tema:  Componente Aspupload  (Leído 4569 veces)

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Componente Aspupload
« en: Jueves 9 de Junio de 2005, 10:24 »
0
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
  1.  
  2. <HTML>
  3. <BODY BGCOLOR="#FFFFFF">
  4.  
  5. <FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="cargar.asp">
  6. <INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR>
  7. <INPUT TYPE=FILE SIZE=60 NAME="FILE2"><BR>
  8. <INPUT TYPE=FILE SIZE=60 NAME="FILE3"><BR>
  9. <INPUT TYPE=SUBMIT VALUE="Upload!">
  10. </FORM>
  11.  
  12. </BODY>
  13. </HTML>
  14.  
  15.  
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
  1.  
  2. <HTML>
  3. <BODY>
  4.  
  5. <%
  6. Set Upload = Server.CreateObject("Persits.Upload.1")
  7. Count= Upload.Save("d:\xvrt\midominio.com\html\upload")
  8. %>
  9. <% = Count %> ficheros subidos.
  10.  
  11. </BODY>
  12. </HTML>
  13.  
  14.  
¿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

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #1 en: Jueves 9 de Junio de 2005, 14:44 »
0
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
  1.  
  2. Set Upload = Server.CreateObject(&#34;Persits.Upload.1&#34;)
  3.  
  4.  

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.
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

carlos_lue

  • Miembro activo
  • **
  • Mensajes: 83
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #2 en: Jueves 9 de Junio de 2005, 15:28 »
0
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

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #3 en: Jueves 9 de Junio de 2005, 15:47 »
0
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
  1.  
  2.  &#60;HTML&#62;
  3. &#60;BODY&#62;
  4. &#60;%
  5. Set Upload = Server.CreateObject(&#34;Persits.Upload&#34;)
  6.  
  7. ' Limita e ltamaño del fichero en 50Kb, lanzando una excepcion si es más grande
  8. Upload.SetMaxSize 50000, True
  9.  
  10. ' Captura todas las excepciones para que controles los mensajes de error
  11. On Error Resume Next
  12.  
  13. 'Lo mas &#34;sencillo&#34;, cargar el fichero ¿Com puñetas haran que funcione?
  14. Upload.Save &#34;c:&#092;upload&#34;
  15.  
  16. ' 8 es el numero que te devuelve la excepción de &#34;fichero demasiado grande&#34;
  17. If Err.Number = 8 Then
  18.    Response.Write &#34;Tu fichero es demasiado grande. Usa otro o déjame tranquilo.&#34;
  19. Else
  20.    If Err &#60;&#62; 0 Then
  21.       Response.Write &#34;Ha ocurrido un error: &#34; & Err.Description
  22.    Else
  23.       Response.Write &#34;¡Por fin! ¡Funcionó!&#34;
  24.    End If
  25. End If
  26. %&#62;
  27.  
  28. &#60;/BODY&#62;
  29. &#60;/HTML&#62;
  30.  
  31.  
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

  • Miembro activo
  • **
  • Mensajes: 83
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #4 en: Jueves 9 de Junio de 2005, 19:12 »
0
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 

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #5 en: Viernes 10 de Junio de 2005, 08:32 »
0
Esto va para carlos_lue:

Estas programando páginas Web con .NET, no? Entonces creo que la limitacion de 4Mb de los archivos que se suben al servidor está en el web.config, ese archivo de configuración que hay en la raíz de tu aplicación Web.

Te lo digo porque yo tambien tuve problemas con eso y cambiando un atributo en el XML de configuracion del web.config se soluciono.

Código: Text
  1.  
  2. &#60;httpRuntime maxRequestLength=&#34;20000&#34;&#62;&#60;/httpRuntime&#62;
  3.  
  4.  

Yo puse eso mismo para establecer el límite en 20Mb mas o menos.

Espero que te sirva, saludos.
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #6 en: Viernes 10 de Junio de 2005, 08:45 »
0
Y esto para moy:

Supongo que el funcionamiento del AspUpload no es ni por osmosis ni telepatia ni la Fuerza.

Cuando en el form que tiene los input de tipo file le dices que el action es pagina.aspx, y tu pulsas en un boton que hace submit; la pagina.aspx obtiene los archivos mediante
Código: Text
  1. Request.Files[&#34;fileOrigen&#34;]
  2.  

Por eso supongo que cuando tu le dices al AspUpload que ejecute Save, el AspUpload tendrá esa instruccion para obtener los achivos que el usuario esta pretendiendo subir de alguna manera como esta:
Código: Text
  1.  
  2. for(int i=0; i&#60;Request.Files.Count; i++)
  3. {
  4.    HttpPostedFile objFile = Request.Files[i];
  5.    //Guardar archivo
  6. }
  7.  
  8.  

Esto es lo que supongo yo que hace el AspUpload,  que puede ser muy distinto de lo que realmente haga. Asi que espero que hayas dejado de creer en la magia (en lo que a la programacion se refiere, jeje).

Por otro lado... ¿Que importa como funciona si funciona?

Saludos
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #7 en: Viernes 10 de Junio de 2005, 14:02 »
0
Tu lo has dicho, si funciona.
Pero como no lo hace me entra la psicosis y me dan ganas de desarmarlo.
He dejado apartado ese trozo de código de momento por un problema más grave que me ha salido por otra parte (voy a ver si alguien ha posteado sobre ese mismo problema) y en cuanto lo solucione volveré a por este.

Moy

  • Miembro activo
  • **
  • Mensajes: 45
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #8 en: Jueves 16 de Junio de 2005, 11:54 »
0
Hm... Retomemos esto.
Mirando la "ayuda" del ASPUpload (Ayuda, por llamarla de alguna manera) he visto una parte que te dice como usarlo en .Net, que como de costumbre, es tan farragosa que nunca sabes si lo has hecho bien y el problema es que realmente no funciona o es que eres un cenutrio y no sabes leer ni las instrucciones de una tostadora.

El primer paso que dice es poner en la etiqueta @Page un trozo para que sea compatible con instrucciones ASP.
Código: Text
  1.  &#60;%@ Page aspCompat=&#34;True&#34; other attributes%&#62;
  2.  
Vale, eso no parece complicado.

Segundo paso, meter en una carpeta llamada /Bin en el direcctorio de tu proyecto el fichero ASPUploadlib.dll que encuentras en la carpeta donde lo instalaste.
Ok, sin problema.

En el tercer paso te ponen un ejemplo de una paginuka que debería funcionar, pero... ¡Los muy kbritos me la ponen en C#!
Código: Text
  1.  
  2.  &#60;%@ Page aspCompat=&#34;True&#34; %&#62;
  3. &#60;%@ Import Namespace=&#34;System.Web&#34; %&#62;
  4. &#60;%@ Import Namespace=&#34;System.Reflection&#34; %&#62;
  5. &#60;%@ Import Namespace=&#34;ASPUPLOADLib&#34; %&#62;
  6.  
  7. &#60;script runat=&#34;server&#34; LANGUAGE=&#34;C#&#34;&#62;
  8. void Page_Load(Object Source, EventArgs E)
  9. {
  10.    ASPUPLOADLib.IUploadManager objUpload;
  11.    objUpload = new ASPUPLOADLib.UploadManager();
  12.  
  13.    int Count = objUpload.Save(&#34;c:&#092;&#092;upload&#34;, Missing.Value, Missing.Value);
  14.  
  15.    // iterate through Files collection
  16.    foreach( ASPUPLOADLib.IUploadedFile objFile in objUpload.Files )
  17.    {
  18.       txtFiles.InnerHtml += objFile.Name + &#34;= &#34; + objFile.Path + &#34; (&#34; + objFile.Size + &#34; bytes)&#60;BR&#62;&#34;;
  19.    }
  20.  
  21.    // iterate through Form collection
  22.    foreach( ASPUPLOADLib.IFormItem objItem in objUpload.Form )
  23.    {
  24.       txtFormItems.InnerHtml += objItem.Name + &#34;= &#34; + objItem.Value + &#34;&#60;BR&#62;&#34;;
  25.    }
  26. }
  27. &#60;/script&#62;
  28.  
  29. &#60;html&#62;
  30. &#60;body&#62;
  31. Files:&#60;BR&#62;
  32. &#60;div id=&#34;txtFiles&#34; runat=&#34;server&#34;/&#62;&#60;P&#62;
  33. Form Items:&#60;BR&#62;
  34. &#60;div id=&#34;txtFormItems&#34; runat=&#34;server&#34;/&#62;&#60;P&#62;
  35. &#60;/body&#62;
  36. &#60;/html&#62;
  37.  
  38.  
Si sé poco de visual .net imaginaos de C#. Voy a ver si creando una página desde cero con ese tocho compruebo si de verdad funciona o me están tomando el pelo.
El problema va a ser pasarla a .Net después si funciona.

Güorker

  • Miembro MUY activo
  • ***
  • Mensajes: 383
    • Ver Perfil
Re: Componente Aspupload
« Respuesta #9 en: Jueves 16 de Junio de 2005, 15:47 »
0
Suerte!!
[size=109]Ondo ibili, gutxi gastau eta bueltak amari[/size]
[size=109]Pasalo bien, gasta poco y las vueltas a tu madre[/size]