Hola,
Quiero hacer un upload a un servidor, y me gustaría saber si alguien me puede indicar como puedo hacerlo y proporcionarme un ejemplo, sobre todo del codigo del lado del servidor, he estado mirando y no me queda nada claro.
| |||
Hacer un upload a un servidor Hola, Quiero hacer un upload a un servidor, y me gustaría saber si alguien me puede indicar como puedo hacerlo y proporcionarme un ejemplo, sobre todo del codigo del lado del servidor, he estado mirando y no me queda nada claro. |
| |||
1 FORM.ASP <html> <head> <link rel=stylesheet type="text/css" href="../default.css"> <title>Formulario de envío de ficheros</title> </head> <body> <h3>Formulario de Colaboraciones</h3> <p>Introduce un texto y elige un fichero para subir.</p> <form action="uptest.asp" method="post" enctype="multipart/form-data"> Tu Nombre <input type="text" name="nombre" size="20"> <br> &n bsp; <input type="file" name="fichero" size="20"><br> &n bsp; <input type="submit" value="Enviar Colaboracion"> </form> </html> 2 uptest.asp <% Response.Buffer = True %> <!--#include file="xelupload.asp"--> <% Dim up, fich set up = new xelUpload up.Upload() Response.Write("Muchas Gracias por tu colaboraciòn, Número de ficheros subidos: " & up.Ficheros.Count & "<br>") Response.Flush For each fich in up.Ficheros.Items Response.Write("<ul>") Response.Write("<li>Nombre: <b>" & fich.Nombre & "</b></li>") Response.Write("<li>Tamaño: <b>" & fich.Tamano & "</b> bytes (" & FormatNumber(fich.Tamano / (1024*1024)) & " Mb)</li>") Response.Write("<li>Tipo MIME: <b>" & fich.TipoContenido & "</b></li>") Response.Write("</ul>") 'Para guardarlo ' Con el nombre de fichero original: fich.Guardar Server.MapPath("/colaborar/archivos-subidos") ' Con otro nombre: ' fich.GuardarComo nombrefichero, Server.MapPath("rutavirtual") '---------------------------------------------------------------- Next 'Limpiamos objeto set up = nothing %> 3 xelupload.asp <% '################################################# ' ' Fichero: xelupload.asp ' Descripción: contiene las clases ' "xelUpload" y "Fichero" ' escritas en VBScript ' ' Autor: Carlos de la Orden Dijs ' Email: [email protected] ' Fecha: Septiembre 2001 ' Documentación: LEEME.TXT ' ' Ultima versión en ' http://www.aspfacil.com/ ' '------------------------------------------------- ' Ultima modificación 6/9/2001 '################################################# Class xelUpload ' Maneja los formularios enviados como 'multipart/form-data' (ficheros) Public Ficheros Private eltosForm '------------------------------------------------------------------------ Private Sub Class_Initialize() set Ficheros = Server.CreateObject("Scripting.Dictionary") set eltosForm = Server.CreateObject("Scripting.Dictionary") End Sub '------------------------------------------------------------------------ Private Sub Class_Terminate() if IsObject(Ficheros) then Ficheros.RemoveAll set Ficheros = nothing end if if IsObject(eltosForm) then eltosForm.RemoveAll set eltosForm = nothing end if End Sub '------------------------------------------------------------------------ 'Permite hacer, por ejemplo: Response.Write(upload.Form("nombre")) Public Property Get Form(campo) if eltosForm.Exists(campo) then Form = eltosForm.Item(campo) else Form = "" end if End Property '------------------------------------------------------------------------ Public Sub Upload() 'Inicia el proceso. Debe llamarse ANTES DE HACER CUALQUIER OTRA COSA Dim byteDatos, strControl Dim iPosInicio, iPosFin, iPos, byteLimite, posLimite Dim iPosFich, iPosLim byteDatos = Request.BinaryRead(Request.TotalBytes) iPosInicio = 1 iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(13))) if (iPosFin-iPosInicio) <= 0 then 'terminamos, no hay nada que leer Exit Sub end if 'extraemos el limite de principio y fin de los datos (p.e. -----2323g237623) byteLimite = MidB(byteDatos, iPosInicio, iPosFin-iPosInicio) posLimite = InStrB(1, byteDatos, byteLimite) 'terminamos cuando la posición del próximo límite sea igual 'a la del límite final, que lleva "--" detrás. do until posLimite = InStrB(byteDatos, byteLimite & str2byte("--")) iPos = InStrB(posLimite, byteDatos, str2byte("Content-Disposition")) iPos = InStrB(iPos, byteDatos, str2byte("name=")) 'nombre del control en <FORM> iPosInicio = iPos + 6 'me salto 6 caracteres -> name=" iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(34))) 'busco las comillas de cierre 'y tengo el nombre del control! strControl = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)) 'busco ahora los datos en sí del control iPosFich =InStrB(posLimite, byteDatos, str2byte("filename=")) posLimite = InStrB(iPosFin, byteDatos, byteLimite) '¿fichero o campo del formulario? if iPosFich <> 0 and iPosFich < PosLimite then 'es un fichero, creo un nuevo objeto fichero y lo añado a Ficheros Dim oFichero, strNombre, strForm set oFichero = new Fichero iPosInicio = iPosFich + 10 'me salto 10 caracteres -> filename=" iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(34))) strNombre = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)) 'quito la ruta inicial oFichero.Nombre = Right(strNombre, Len(strNombre)-InStrRev(strNombre, "\")) '" iPos = InStrB(iPosFin, byteDatos, str2byte("Content-Type:")) iPosInicio = iPos + 14 'me salto Content-Type y un espacio!! iPosFin = InStrB(iPosInicio, byteDatos, str2byte(chr(13))) 'busco el retorno de carro oFichero.TipoContenido = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)) iPosInicio = iPosFin + 4 'me salto los 3 retornos de carro que lleva!!! iPosFin = InStrB(iPosInicio, byteDatos, byteLimite)-2 'dos caracteres atrás oFichero.Datos = MidB(byteDatos, iPosInicio, iPosFin-iPosInicio) if oFichero.Tamano > 0 then 'lo añado a la colección Ficheros! Ficheros.Add strControl, oFichero end if else 'es un campo del formulario iPos = InStrB(iPos, byteDatos, str2byte(chr(13))) iPosInicio = iPos + 4 iPosFin = InStrB(iPosInicio, byteDatos, byteLimite)-2 'extraigo el valor del control del formulario! strForm = byte2str(MidB(byteDatos, iPosInicio, iPosFin-iPosInicio)) if not eltosForm.Exists(strControl) then eltosForm.Add strControl, strForm else eltosForm.Item(strControl) = eltosForm.Item(strControl)+","&strForm end if end if 'saltamos al siguiente límite iPosLimite = InStrB(iPosLimite+LenB(byteLimite), byteDatos, byteLimite) loop End Sub '------------------------------------------------------------------------ Private Function str2byte ( str ) Dim i, strbuf for i = 1 to Len(str) strbuf = strbuf & ChrB(AscB(Mid(str, i, 1))) next str2byte = strbuf End Function '------------------------------------------------------------------------ Private Function byte2str ( bin ) Dim i, bytebuf for i = 1 to LenB(bin) bytebuf = bytebuf & Chr(AscB(MidB(bin, i, 1))) next byte2str = bytebuf End Function '------------------------------------------------------------------------ End Class '############################ Clase Fichero!!! ########################## Class Fichero '------------------------------------------------------------------------ Public Nombre Public TipoContenido Public Datos '------------------------------------------------------------------------ Public Property Get Tamano() Tamano = LenB(Datos) End Property '------------------------------------------------------------------------ Public Sub Guardar(ruta) Dim oFSO, oFich Dim i if ruta = "" or Nombre = "" then Exit Sub if Mid(ruta, Len(ruta)) <> "\" then '" 'añado la ultima barra a la ruta ruta = ruta & "\" '" end if set oFSO = Server.CreateObject("Scripting.FileSystemObject") if not oFSO.FolderExists(ruta) then Exit Sub set oFich = oFSO.CreateTextFile(ruta & Nombre, true) for i = 1 to LenB(Datos) oFich.Write Chr(AscB(MidB(Datos, i, 1))) next oFich.Close set oFSO = nothing End Sub '------------------------------------------------------------------------ Public Sub GuardarComo(nombrefichero, ruta) Dim oFSO, oFich, i if ruta = "" or nombrefichero = "" then Exit Sub if Mid(ruta, Len(ruta)) <> "\" then '" 'añado la ultima barra a la ruta ruta = ruta & "\" '" end if set oFSO = Server.CreateObject("Scripting.FileSystemObject") if not oFSO.FolderExists(ruta) then Exit Sub set oFich = oFSO.CreateTextFile(ruta & nombrefichero, true) for i = 1 to LenB(Datos) oFich.Write Chr(AscB(MidB(Datos, i, 1))) next oFich.Close set oFSO = nothing End Sub '------------------------------------------------------------------------ Public Sub GuardarBD (byRef field) if LenB(Datos) = 0 then Exit Sub field.AppendChunk Datos End Sub End Class '------------------------------------------------------------------------ %>
__________________ Pablo Maurelli Noc IT - Monitoreo y Administración de Red Gerencia de Infraestructura IT E-Mail: [email protected] (MSN) |
| ||||
zonatech, cuando inserteis un codigo no hace falta todo el HTML desde <html> hasta </HTML>, lo unico que hace es liar lo realmente importante que es el codigo que queremos sacar. http://aspfacil.com/articulos/07092001.asp |