Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2007, 13:59
jesusjj
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 4 meses
Puntos: 2
Duda al enviar url de fichero a BBDD

Buenas tardes:

Lo primero enhorabuena por este magnífico foro, donde siempre encuentro temas muy interesantes y de gran ayuda.

Les comento, para ver si me pueden echar una mano.

Tengo un script que saqué de alguna web, no la recuerdo, para subir ficheros por un formulario y lo modifiqué para enviar a la base de datos la url del fichero. Todo lo hace correctamente, hasta renombrar el fichero y demás. Sin embargo, el registro que hace en la base de datos, lo hace con el nombre original del fichero.

He probado varias cosas, pero sólo hace bien el registro (guarda nombre original además de la ruta) si hago la inserción con la cadena: '$upload_dir.$file_name'
He intentado crear una nueva variable con el valor de la cadena y tampoco guarda el registro. Incluso, crear una nueva variable con el nombre definitivo ($last_name), que si sustiuyo e intento '$upload_dir.$last_name', tampoco guarda nada, sólo el '$upload_dir'

Dado que no encuentro el lugar en el que falla, les dejo el código por si encontraran algo raro.

Muchas gracias.

Cita:
// inicio del upload


//Maximo tamaño en bytes
$MAX_SIZE = 4194304;

//Array con extensiones
$FILE_EXTS = array('.zip','.jpg','.pdf','.png','.gif','.rar', '.txt');

//URL
$url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

//Directorio de subida
$upload_dir = "../FTP/";

if (!is_dir($upload_dir)) {
if (!mkdir($upload_dir))
die ("El directorio no existe o no puede crearse");
if (!chmod($upload_dir,0777))
die ("Fallo el cambio de permisos a 0777.");
}

//Aca hacemos un log.txt con algunos datos como fecha e IP
if ($_FILES['userfile']) {
$archivo_log = fopen("log.txt","a");
fwrite($archivo_log,date("Y.m.d h:i:s")." Subida - $_SERVER[REMOTE_ADDR] "
.$_FILES['userfile']['name']." "
.$_FILES['userfile']['type']."\n");
fclose ($archivo_log);

$file_type = $_FILES['userfile']['type'];
$file_name = $_FILES['userfile']['name'];
$file_ext = strtolower(substr($file_name,strrpos($file_name,". ")));

//Chequeo que los archivos no excedan el limite
if ( $_FILES['userfile']['size'] > $MAX_SIZE)
$mensaje = "El archivo debe pesar menos que 4 MB.";

//Chequeo la extension
else if (!in_array($file_ext, $FILE_EXTS))
$mensaje = "Lo siento, archivos $file_ext no estan permitidos.";
else
$mensaje = do_upload($upload_dir, $upload_url);

print "<script>window.location.href='$url?mensaje=$mensa je'</script>";
}
else if (!$_FILES['userfile']);
else
$mensaje = "Archivo invalido.";

//LISTA DE ARCHIVOS

$handle=opendir($upload_dir);
$filelist = "";
while ($file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist .= "<a href='$upload_dir$file'>".$file."</a>";
$filelist .= "<sub><small><font color=grey> ".date("d-m H:i", filemtime($upload_dir.$file))
."</font></small></sub>";
$filelist .="<br>";
}
}


//Aca hacemos el upload
function do_upload($upload_dir, $upload_url) {

$temp_name = $_FILES['userfile']['tmp_name'];
$file_name = $_FILES['userfile']['name'];

//Aca reemplazo saco las comillas y barras de los nombres
$file_name = str_replace("\\","",$file_name);
$file_name = str_replace("'","",$file_name);
$file_name = str_replace("_","",$file_name);
$file_name = str_replace(" ","",$file_name);

//Aca defino $file_path
//$last_name = $file_name;
$file_path = $upload_dir.$file_name;

//Chequeo el nombre del archivo
if ( $file_name =="") {
$mensaje = "Nombre invalido o vacio";
return $mensaje;
}

$resultado = move_uploaded_file($temp_name, $file_path);
if (!chmod($file_path,0777))
$mensaje = "Fallo el cambio de permisos a 0777.";
else
$mensaje = ($resultado)?"$file_name subido con exito." :
"Hubo un error al subir el archivo.";
return $mensaje;
}


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "new_public")) {
$insertSQL = sprintf("INSERT INTO publicacion (id_public, autor, titulo, categoria, archivo, descripcion) VALUES (%s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_public'], "int"),
GetSQLValueString($_POST['autor'], "text"),
GetSQLValueString($_POST['titulo'], "text"),
GetSQLValueString($_POST['categoria'], "int"),
GetSQLValueString($upload_dir.$file_name, "text"),
GetSQLValueString($_POST['descripcion'], "text"));

mysql_select_db($database_fagr, $fagr);
$Result1 = mysql_query($insertSQL, $fagr) or die(mysql_error());
}