Foros del Web » Programando para Internet » PHP »

cargar archivos.

Estas en el tema de cargar archivos. en el foro de PHP en Foros del Web. Buenas compañeros, esta es la primera vez que me veo en la tesitura de trabajar con archivos, la idea es cargar los archivos en una ...
  #1 (permalink)  
Antiguo 03/05/2007, 05:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
cargar archivos.

Buenas compañeros, esta es la primera vez que me veo en la tesitura de trabajar con archivos, la idea es cargar los archivos en una carpeta dentro del servidor. y luego poder consultarlos.

La idea es que los archivos, como puede haber más de uno por cada registro vayan relacionados en una tabla aparte, y la relación sera tal que así:

id_tabla_aparte.
id_registro_principal
nombre_archivo.

No quiero que se guarde el archivo en la bbdd, sino que se cree un enlace para descargarlo a posteriori, para luego poder visualizar de alguna manera el nombre de los archivos, y poder hacer un enlace para descargarlos.

Me podéis sugerir por donde empezar a investigar.

estoy mirándome la función move_uploaded_file, pero tengo una serie de dudas sobre la misma.

este código me genera la parte del formulario que me busca el archivo que quiero cargar:
Código HTML:
<input name="archivo" type="file"> 
la cuestión es cuando recibo la variable $archivo en la función de move_upload_file tengo la siguiente sentencia:

Código PHP:
move_uploaded_file string nombre_archivostring destino 
sería tal que así:
Código PHP:
move_uploaded_file $archivo$directorio 
y el directorio sería tal que así:

Código PHP:
$directorio=".../files" 
gracias

oskar
  #2 (permalink)  
Antiguo 03/05/2007, 05:48
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: cargar archivos.

Hola oscar, yo tambien me encontre con el problema de que tenia que asociar varios archivos (imagenes) con un mismo registro, y lo que hice fue ponerle de nombre a la imagen el mismo nombre del registro seguido de un guion y un numero de posicion. Por ejemplo, si el registro es: 1000 y tenia que asociarle tres archivos entonces, a los archivos le ponia los siguientes nombres:
1000-1
1000-2
1000-3
Es decir que la estructura de mi tabla de archivos era mas o menos asi, suponiendo que tienes otra tabla donde a ese id_registro estan guardadas otras cosas.
  • id_registro
  • nombre
  • indice
donde indice hace referencia al numero detras del guion, que me sirvio tenerlo separado para otras cosas despues. Es una sugerencia, Saludos.
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 03/05/2007, 05:52
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: cargar archivos.

Hola Cala932, esa es la segunda parte, ahora mismo estoy con la cuestión de subir los archivos al servidor.

estoy mirándome:
Código HTML:
move_uploaded_file
y
Código HTML:
$HTTP_POST_FILES['userfile']['name']

$HTTP_POST_FILES['userfile']['type']

$HTTP_POST_FILES['userfile']['size']

$HTTP_POST_FILES['userfile']['tmp_name']
pero no termino de entender muy bien como funcionan.

A ver si me puedes ayudar con esto.

un saludo

oskar
  #4 (permalink)  
Antiguo 03/05/2007, 06:51
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: cargar archivos.

Hola oscar, una vez a traves del formulario cuando utilizas el input type=file y le das submit, puedes saber si el archivo se ha subido, con lo siguiente:
Código PHP:
if(is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name']))
echo
"Se ha subido";
else
echo
"No se ha subido"
Ahora para hacerla mas completa, lo siguiente, si se ha subido entonces copiamos el archivo a donde queremos, por ejemplo:
Código PHP:
if(is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
copy($_FILES['archivo']['tmp_name'],"C:/AppServ/www/archivo/".$nombre_del_archivo); 
Puedes reemplazar la funcion copy por move_uploaded_file. La variable $nombre_del_archivo, lo puedes llegar a poner asi:
Código PHP:
$nombre_del_archivo=$HTTP_POST_FILES['archivo']['name']; 
Que en este caso tendra el nombre original del archivo.

Estan quedando pendiente varias validaciones antes de hacer lo anterior, por ejemplo:
Código PHP:
//con esto
$HTTP_POST_FILES['userfile']['type'//puedes verificar el tipo del archivo 
//ejemplo:
if($HTTP_POST_FILES['userfile']['type']!=txt)
echo
"El archivo no es un txt";
//con esto puedes verificar el tamaño
if($HTTP_POST_FILES['userfile']['size']>100000)
echo
"El archivo es demasiado grande"
Espero que te sirva. Saludos, avisame cualquier cosa
__________________
->Aprender es un proceso que incluye el error..
  #5 (permalink)  
Antiguo 03/05/2007, 07:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: cargar archivos.

Muchísimas gracias por la clase cala392 estoy empezando a entenderlo,

tengo una duda.

Código HTML:
$HTTP_POST_FILES['userfile']['tmp_name']
esta variable me permite indicar el directorio donde subo los archivos.

puedo hacer:

Código PHP:
$directorio=$HTTP_POST_FILES['userfile']['tmp_name'],"C:/AppServ/www/archivo/" 
y hacer la carga de esta manera:

Código PHP:
copy ($directorio.$nombre_del_archivo); 
Un saludo

oskar
  #6 (permalink)  
Antiguo 03/05/2007, 07:33
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: cargar archivos.

Buenas nuevamente oscar, si te fijas la funcion copy lleva dos parametros, el primero es $HTTP_POST_FILES['userfile']['tmp_name'] que es el archivo que nosotros hemos subido al servidor temporalmente, y el segundo es el lugar a donde queremos llevarlo, por lo tando la respuesta a tu pregunta, es no. Es decir que podrias de ultima hacer:
Código PHP:
$directorio="C:/AppServ/www/archivo/";
copy($HTTP_POST_FILES['userfile']['tmp_name'],$directorio.$nombre_del_archivo); 
Saludos!!!
__________________
->Aprender es un proceso que incluye el error..
  #7 (permalink)  
Antiguo 03/05/2007, 07:49
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: cargar archivos.

Muchas gracias por la magistral clase Cala.

Voy a pegarme con ello a ver que resultados me da.

Luego ya miraré para la segunda parte, renombrar los archivos.

Un saludo

oskar
  #8 (permalink)  
Antiguo 03/05/2007, 08:36
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: cargar archivos.

De nada oscar, ha sido un gusto, avisame cuando quieras que te doy una mano. Saludos
__________________
->Aprender es un proceso que incluye el error..
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 18:30.