Hola gabrisa.
2 cosas son la que pides, pues bien, vamos a ver si esto va bien.
1ª. Subir un archivo. Con esta rutina yo subo archivos sin problemas.
Código PHP:
<?php
function subirarchivo($var_name, $var_size, $var_tmp, $var_tipo, $location, $filename, $maxfilesize){
$ok = false;
$archivo_name = strtolower($var_name);
$archivo_size = $var_size;
$archivo_tmp = $var_tmp;
$archivo_tipo = $var_tipo;
// 1 - Chequea el tipo de archivo.
if($archivo_tipo=="application/vnd.ms-excel" || $archivo_tipo=="application/pdf" || $archivo_tipo=="application/msword" || $archivo_tipo=="text/plain" || $archivo_tipo=="image/jpeg" || $archivo_tipo=="image/pjpeg" || $archivo_tipo=="image/gif" || $archivo_tipo=="image/x-png" || $archivo_tipo=="image/png"){
// Si tipo de archivo es correcto.
$ok = true;
}
else{
// Si el tipo de archivo no es correcto.
echo "Error 1 - El archivo $archivo_name, no es un documento valido.";
}
// 2 - Chequea Tamaño.
if(isset($maxfilesize)){
if($archivo_size > $maxfilesize){// Si Tamaño de archivo mayor de lo permitido.
$ok = false;
echo "Error 2 - El archivo es mayor de tamaño maximo.";
}
}
// 3 - Si el archivo pasa todas las verificaciones anterioes ok = true.
if($ok==true){
$tempname = $archivo_tmp;
if(isset($filename)){$uploadpath = $location.$filename;}
else{$uploadpath = $location.str_replace(" ","_",$archivo_name);}
if(is_uploaded_file($archivo_tmp)){
while(move_uploaded_file($tempname, $uploadpath)){
chmod($uploadpath, 0775);
echo "Archivo añadido,";
}
}
return true;
}
else{return false;}
}
?>
2ª. En la funcion anterior pasa una variable que se llama $location, pues bien esa variable es la ruta del archivo, solo tienes que grabarla en la base de datos y listo.