Foros del Web » Programando para Internet » PHP »

cargar un archivo en una tabla de una bd

Estas en el tema de cargar un archivo en una tabla de una bd en el foro de PHP en Foros del Web. Hola: Necesito cargar datos en una tabla y además tmb. que se pueda subir un archivo con el curriculum de quien cargó los datos. Se ...
  #1 (permalink)  
Antiguo 14/12/2005, 12:10
 
Fecha de Ingreso: noviembre-2005
Mensajes: 35
Antigüedad: 19 años
Puntos: 0
cargar un archivo en una tabla de una bd

Hola:
Necesito cargar datos en una tabla y además tmb. que se pueda subir un archivo con el curriculum de quien cargó los datos. Se que lo puedo hacer con upload pero no se cómo meterlo en una tabla o como renombrarlo para que me lo traiga cuando lo quiero mustrar. ¿Alguien sabe cómo ?
Muchas gracias
__________________
Patito

:adios:
:pensando:
  #2 (permalink)  
Antiguo 14/12/2005, 12:34
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Yo prefiero no guardar el archivo en la bd por cuestiones de rendimiento, sólo guardar la ruta en que dejé el archivo al hacer el upload. Cuando necesite mostrar el archivo, para descarga o sólo visualizar la información, busco su ruta en la bd y lo muestro o descargo segun sea el caso.
  #3 (permalink)  
Antiguo 14/12/2005, 12:53
 
Fecha de Ingreso: noviembre-2005
Mensajes: 35
Antigüedad: 19 años
Puntos: 0
Gracias Claudio, pero yo subo el archivo con upload y después cómo se el nombre del archivo que subió, cómo lo tomo para guardarlo en el campo de la tabla?.
__________________
Patito

:adios:
:pensando:
  #4 (permalink)  
Antiguo 14/12/2005, 12:59
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
El ultimo parametro de move_uploaded_file() tiene la ruta completa de tu archivo, ese valor lo tomas y lo guardas en una tabla. Luego cuando presentas el archivo, usas readfile($ruta) mas las cabeceras del tipo de archivo que vas a mostrar o las cabeceras para forzar la descarga.
  #5 (permalink)  
Antiguo 14/12/2005, 13:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 35
Antigüedad: 19 años
Puntos: 0
Claudio: Buenísimo!!!, ya pude tomar el dato y con el readfile que me lo muestre, pero no entiendo lo de las cabeceras, supongo que por eso es que muestra un .doc con todos caracteres de control en lugar de bien formateado. ¿Me podés decir cómo hago?, es la última cosa con la que te molesto y mil gracias!!!
__________________
Patito

:adios:
:pensando:
  #6 (permalink)  
Antiguo 14/12/2005, 13:54
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Hay que generar las cabeceras adecuadas para cada tipo de archivo. Ejemplo para .doc:

header("Content-type: application/msword");
  #7 (permalink)  
Antiguo 14/12/2005, 14:12
 
Fecha de Ingreso: noviembre-2005
Mensajes: 35
Antigüedad: 19 años
Puntos: 0
si, lo encontré en php.net y lo puse así
Código PHP:
if (move_uploaded_file($_FILES['archivo']['tmp_name'],$_FILES['archivo']['name'] )) {
  
$filename =$_FILES['archivo']['name'];
  
           
$filename realpath($filename);

           
$file_extension strtolower(substr(strrchr($filename,"."),1));

           switch (
$file_extension) {
               case 
"pdf"$ctype="application/pdf"; break;
               case 
"exe"$ctype="application/octet-stream"; break;
               case 
"zip"$ctype="application/zip"; break;
               case 
"doc"$ctype="application/msword"; break;
               case 
"xls"$ctype="application/vnd.ms-excel"; break;
               case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
               case 
"gif"$ctype="image/gif"; break;
               case 
"png"$ctype="image/png"; break;
               case 
"jpe": case "jpeg":
               case 
"jpg"$ctype="image/jpg"; break;
               default: 
$ctype="application/force-download";
           }

           if (!
file_exists($filename)) {
               die(
"NO FILE HERE");
           }

           
header("Pragma: public");
           
header("Expires: 0");
           
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
           
header("Cache-Control: private",false);
           
header("Content-Type: $ctype");
           
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";");
           
header("Content-Transfer-Encoding: binary");
           
header("Content-Length: ".@filesize($filename));
           
set_time_limit(0);
           @
readfile("$filename") or die("File not found."); 
  echo 
"Archivo subido correctamente $filename";
  
   
} else {
   print 
"No se consiguio subir el archivo.";
    }
?> 
pero no lo toma, me dice
Código:
Warning: Cannot modify header information - headers already sent by (output started at /home/ga000229/public_html/recogeFichero.php:7) in recogeFichero.php on line 33
Voy a seguir investigando, si sabés porqué avisame. MIL GRACIAS!!!
__________________
Patito

:adios:
:pensando:
  #8 (permalink)  
Antiguo 14/12/2005, 14:25
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
El error dice que en la linea 33 estas enviando html al cliente y por tanto no puedes usar header() despues de esa linea, dado que este es uno de las restricciones de la funcion header(). Organiza tu codigo de forma que el llamado a la funcion header siempre ocurra antes en enviar html al cliente (o antes de usar echo).
  #9 (permalink)  
Antiguo 14/12/2005, 14:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 35
Antigüedad: 19 años
Puntos: 0
listo!!!!, ya funcionó!!!, muchisimas gracias!!!.
__________________
Patito

:adios:
:pensando:
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 12:14.