Foro de Informatica
" Hay la misma diferencia entre un sabio y un ignorante que entre un hombre vivo y un cadáver "

- Aristóteles -



        


Google
 
Web www.ComputerFacil.com
Forista del Mes:

amateos1404


  Reply to this topicStart new topicStart Poll

> Upload De Archivos
dejavi
  Publicado: Aug 29 2007, 04:04 PM
Quote Post


Tera user
Group Icon

Grupo: Moderadores
Mensajes: 3.666
Miembro nº: 17.695
Registrado: 18-January 07



290807.



Permitirle al cliente subirle archivos al servidor es algo muy comun y cada vez mas necesario para que los sitios web sean mas dinámicos y configurables. Veremos una solucion rapida para realizar esta misión

Existen componentes para realizar la tarea (algunos muy buenos y recomendables) pero si no queremos hacer uso de ellos porque no siempre nuestro hosting permite instalarlos (algunas veces hay que pagar adicinonales), podemos hacer un upload por ASP PURO

Para el ejemplo, vamos a usar un script que lo pueden Descargar Aqui
El ZIP contiene 2 archivos.

freeASPUpload.asp Corazon del upload. Clase implementada con sus metodos y propiedades
(no hace falta que entendamos o miremos este archivo, salvo que nos interese, por supuesto)
PruebaUpload.asp Ejemplo de upload. (es el código que está aqui abajo)


En realidad el código de aqui abajo esta simplificado para explicar ahora un poco como se maneja el upload. El ejemplo que está en el ZIP para descargar está mas completo y mejor, pero para explicar por primera vez, creo mas fácil un ejemplo con menos cosas...

Explicacion en detalle del script (el ejemplo)



La primera línea importante del script es la linea del Include: <!-- #include file="freeaspupload.asp" --> la cual llama al archivo freeASPUpload.asp (que como dije antes, es el corazon de todo esto). Sin esta linea nada funcionará



Luego mas abajo hay un comentario que básicamente lo que dice es que hay que configurar el directorio de destino donde los archivos subidos van a quedar. Esto se hace en una variable que está justo alli, en el ejemplo se llama uploadsDirVar. (Leer el comentario. Habla sobre permisos de escritura, etc.)



Luego aparece una funcion llamada SaveFiles y es la que se encarga de efectuar la subida de los archivos. Es la funcion que deberemos llamar para hacer el upload (internamente digamos, esta funcion hace uso del archivo freeASPUpload.asp)



Explicacion dentro de la funcion. Hay dos lineas principales e imprescindibles:
Set Upload = New FreeASPUpload
Upload.Save(uploadsDirVar)
La primer linea crea un objeto de la clase FreeASPUpload y la segunda llama al método Save, produciendo el upload de los archivos.


Luego restaría explicar un poco de HTML.
El formulario tiene que ser asi: <FORM METHOD="POST" enctype="multipart/form-data">
Y luego los campos de texto deben ser algo asi: <INPUT NAME="archivo1" TYPE="FILE">


Todo esto que estoy diciendo, está reflejado en el script de aqui abajo

<%
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600
%>
<!-- #include file="freeaspupload.asp" -->
<%
' ****************************************************
' Cambiar el valor de la siguiente variable
' para indicar el directorio de destino.
' El directorio indicado debe tener permisos de escritura
' de caso contrario el script fallará mostrando un error.
Dim uploadsDirVar
uploadsDirVar = "C:\Inetpub\wwwroot\"
' ****************************************************

Function SaveFiles
Dim Upload, ks, resumen
Set Upload = New FreeASPUpload
Upload.Save(uploadsDirVar)
If Err.Number <> 0 then Exit function
ks = Upload.UploadedFiles.keys
if (UBound(ks) = -1) then resumen = "No es un nombre valido en el sistema."
SaveFiles = resumen
end function
%>


<HTML>
<HEAD><TITLE>Test Free ASP Upload</TITLE></HEAD>
<BODY>
<br>
<div style="border-bottom: #A91905 2px solid;font-size:16">Subir archivos</div>
<div style='margin-left:150'>

<form name="frmSend" method="POST" enctype="multipart/form-data" action="pruebaupload.asp">
Archivo 1: <input name="attach1" type="file" size="35"><br>
Archivo 2: <input name="attach2" type="file" size="35"><br>
<br>
<input type=submit value="Upload">
</form>
<BR></div>
<%
'solo llamo al UPLOAD si hay envio de formulario
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
response.write SaveFiles()
end if
%>
</BODY> </HTML>


Este ejemplo que manejamos aqui, es una "modificación" de su original, al cual le debemos las gracias. El sitio oficial es este: Free ASP Upload. Aqui hay una explicación (en ingles) del script y explica algunas cosas más.

Queda mucho por decir... no se vayan...

Por ejemplo que no podran hacer Request.Form("nombre") a un campo de texto que llamaron nombre dentro del mismo formulario... Eso se debe a que el formulario va enviado de otro modo. El atributo ENCTYPE del FORM envia los datos en otro formato digamos, impidiendo que el tipico Request() funcione
Pero a no preocuparse, podran hacer exactamente lo mismo con la llamada a Upload.Form("nombre")

Lamentablemente todo esto es bastante simple, pero carece de la posibilidad de guardar el archivo con un nombre diferente al que tiene. Cual es el problema? que se podrian subir archivos con el mismo nombre, y pisarse uno a otro. Un ejemplo facil seria una imagen que se llama "foto.jpg".
La solucion que yo planteo a este problema, es que nunca dejemos los archivos con el nombre que los suben, y siempre renombrarlos a algo unico. Voy a poner un ejemplo.
Supongamos estamos desarrollando una pagina de autos. y se pueden subir fotos de autos... Supuestamente esos "autos" son registros de una tabla de una base de datos, la cual siempre deberia tener un ID. entonces la foto subida se puede renombrar al numero de ID del "auto"... es decir..........................


Como renombrar un archivo............


http://soloasp.com.ar/vereje.asp?eje=52




cool.gif






--------------------
user posted image
PMEmail Poster
Top
0 usuario(s) está(n) leyendo esta discusión (0 invitado(s) y 0 usuario(s) anónimo(s))
0 miembro(s):

Topic Options Reply to this topicStart new topicStart Poll

 


ComputerFacil.com © 2006
          Webs Afiliadas - Contacto
Ofertas PCs :: Consultor de Marketing Online :: Foros :: Posicionamiento Web :: Foros de Informatica :: Foros :: eurodipity :: elhacker