Foros del Web » Programando para Internet » PHP »

archivo en una variable de session

Estas en el tema de archivo en una variable de session en el foro de PHP en Foros del Web. hola que tal! una consultita :P ¿es posible meter un archivo en una variable de session? tengo problemas cuando quiero copiar este archivo, puedo ver ...
  #1 (permalink)  
Antiguo 17/07/2006, 05:09
Avatar de Bartak  
Fecha de Ingreso: enero-2004
Ubicación: Chilito
Mensajes: 121
Antigüedad: 13 años, 11 meses
Puntos: 0
archivo en una variable de session

hola que tal!
una consultita :P

¿es posible meter un archivo en una variable de session?

tengo problemas cuando quiero copiar este archivo, puedo ver el nombre del archivo y la direccion temporal, pero como les cuento no puedo copiarlo.


$doc es una variable de session


if(copy($doc['tmp_name'],"doc/$doc['name']")){
echo"copio";
}
else{
echo"no paso nada :(";
}

saludos y gracias de ante mano!!
__________________
"Llegado el momento supervisare my propia caida" - Alvaro Henriquez
  #2 (permalink)  
Antiguo 17/07/2006, 06:23
Avatar de Bartak  
Fecha de Ingreso: enero-2004
Ubicación: Chilito
Mensajes: 121
Antigüedad: 13 años, 11 meses
Puntos: 0
me sale este error :(

Warning: copy(C:\WINDOWS\TEMP\php297.tmp): failed to open stream: No such file or directory in c:\appserv\www\abogados\ing_avance.php on line 167

help please!!
__________________
"Llegado el momento supervisare my propia caida" - Alvaro Henriquez
  #3 (permalink)  
Antiguo 17/07/2006, 09:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa:

move_uploaded_file() en lugar de copy()

No sé de donde sale $doc .. pero deberías usar $_FILES['nombre_campo_file_formulario']['tmp_name'] para aceder a tus archivos y luego ['name'] para obtener su nombre original (entre otros parámetros del archivo: tamaño, MIME tipo .. etc).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 18/07/2006, 15:06
Avatar de Bartak  
Fecha de Ingreso: enero-2004
Ubicación: Chilito
Mensajes: 121
Antigüedad: 13 años, 11 meses
Puntos: 0
hola!!
muchas gracias por responder y felicitaciones por el reconocimiento que le dieron, se lo merece

para tomar el archivo ocupo $file=$_FILES['archivo'];

lo que queria hacer es guardar un archivo en una variable de session
como

$_SESSION['arch'][2]=$file;

para despues poder subir el archivo con un copy();
pero me daba ese error que le comente.

la razon de haber tratado de meter el archivo o la ruta en una variable de session, era por que tenia que subir varios archivos, el $doc era para hacer la pregunta que en codigo que pongo a continuacion es $arch que es un array

for($i=0;$i<=count($arch);$i++){
...
$extension = explode(".",$_SESSION['arch'][$i][2]['name']);
$num = count($extension)-1;
....
if(copy($_SESSION['arch'][$i][2]['tmp_name'],"doc/$id_doc_ulti_$i.$extension[$num]")){
...
}

}

puedo ver el nombre de todos los archivos en el array, pero no puedo copiar. intente hacerlo con un solo archivo y meterlo como a una variable de session que no es un array, para hacer pruebas, y tambien puedo ver el nombre y tmp_name pero no logro copiar. lo que no se es que si esto se puede o el tmp_name pierde la referencia al archivo cuando lo paso a una variable de session.

saludos!!
__________________
"Llegado el momento supervisare my propia caida" - Alvaro Henriquez
  #5 (permalink)  
Antiguo 18/07/2006, 17:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No, no puedes llevar en una sesión "$_FILES" entero en una sesión .. entre otras cosas por qué PHP maneja en forma "temporal" y cuando sube el archivo el nombre que tiene "temporal" el archivo hasta que el proceso de upload y en ese flujo del código del mismo script y ejecución se produce. Por eso de alguna manera para cuando tu quieres "copy()ar" ya no tienes el archivo en su origen o con el nombre "temporal" que tu registrastes en tu variable de sesión.

En definitiva .. el proceso se ha de hacer inmediatamente; tu subes el archivo y lo copias donde corresponda .. Si a su vez según tu aplicación el código es temporal, ya lo eliminaras si por otras condiciones que se produzcan no corresponda que almacenes ese archivo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 18/07/2006, 17:21
Avatar de Bartak  
Fecha de Ingreso: enero-2004
Ubicación: Chilito
Mensajes: 121
Antigüedad: 13 años, 11 meses
Puntos: 0
okas :) gracias por aclararme el tema. se paso .

ahora estoy subiendo los archivos a una "/carpeta_temporal" y registro los datos en una tabla_BD_temporal... si completa la operacion muevo los archivos a la carpeta de destino e ingresos los datos a la BD, si no trunco la tabla y elimino los archivos de la carpeta temporal.

gracias nuevamente.

saludos
__________________
"Llegado el momento supervisare my propia caida" - Alvaro Henriquez
  #7 (permalink)  
Antiguo 19/07/2006, 07:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Podrías ahorrarte esa tabla "temporal" en tus BBDD .. es decir .. en tus variables de sesión propaga tus datos (texto plano del formulario HTML) y el "nombre" del archivo (que ya movistes en el primer proceso a tu "capeta_Temporal" .. Si el proceso se concluye por completo crea tus registros definitivos en tus BBDD con los datos de tu sesión y mueve a su destino definitivo tu archivo (de tu "/carpeta_temporal" a donde corresponda) y/o lo eliminas de ese sitio.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:04.