Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/01/2009, 10:24
franco190453
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años, 1 mes
Puntos: 33
Respuesta: ¿Dónde se guarda un archivo mientras se esta subiendo?

linkito:

Ademas de lo que elocuentemente nos ha explicado el amigo GatorV,
Cuando, desde un html o xhtml o etc archivo se activa una subida de archivo para ser ejecutado por el action=... del codigo y suponiendo que va dirigido a un archivo con extension php, el proceso es el siguiente->
El archivo (ejemplo: arch.jpg) es depositado en un archivo temporal definido por la variable del php.ini segun te detallo a continuacion;

Cita:
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /Apache/Apache2/htdocs/temp
en ausencia de ese directorio el archivo es subido temporalmente al directorio que por defecto utiliza el sistema operativo que utilizas.
En el caso especifico de php y habiendo definido un directorio especifico temporal, el archivo es subido al directorio temporal, valga la redundancia, con nombre php.(unnumero).tmp, observa que tmp es la extension utilizada por php.
Ahora, esto es muy importante, el archivo temporal permanece en el directorio temporal mientras este corriendo el archivo o codigo php; una vez el codigo php termina o mejor dicho exits(), el archivo desaparece o es transferido a su ubicacion final.
Es importante hacer notar que php al inicio del script o codigo y haciendo un is_uploaded_file...., ya conoce del tipo, nombre original, extension y demas detalles; es en este momento que tu puedes aceptar o rechazar el archivo de acuerdo a tu conveniencia.
Si quieres hacer una prueba puedes subir un archivo cualquiera y cuando el archivo php lo recibe puedes hacer un sleep(24) y abres el directorio temporal y lo podras ver por al menos 24 segundos; personalmente lo he logrado ver y hasta copiar para ver el contenido y si se conforma con lo realmente subido.
La funcion move_upload_file... hace el trabajo final de colocarlo en el directorio final. Pareciera ser que php traslada no realmente el archivo temporal pero mas bien el contenido de este y procede a destruir el temporal.
Saludos
Y espero nos ayude a todos
Franco
P.S. si haces un is_uploaded_file... y nada mas, podras observar que el archivo .tmp contiene el archivo a subir pero al terminar el codigo, php desaparece y elimina dicho archivo temporal.
P.S2 Para php version 5 o superior creo que la funcion php upload viene activada por defecto.

Última edición por franco190453; 21/01/2009 a las 19:20