Foros del Web » Programando para Internet » PHP »

Control de archivos subidos al servidor..

Estas en el tema de Control de archivos subidos al servidor.. en el foro de PHP en Foros del Web. Buenas, estoy desarrollando una aplicación para insertar datos de unos pisos en una base de datos. guardo la ruta del servidor en la base de ...
  #1 (permalink)  
Antiguo 09/12/2004, 11:14
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
Control de archivos subidos al servidor..

Buenas, estoy desarrollando una aplicación para insertar datos de unos pisos en una base de datos. guardo la ruta del servidor en la base de datos, y todo perfecto. tengo alguna duda, a ver si alguien me la puede resolver. tengo el siguiente codigo de upload:

$archivo_nom=eregi_replace(" ","_",$archivo_name);
if(!copy($archivo, "archivos/".$archivo_nom))
{
$u="1000";
echo "error al copiar el archivo ".$archivo_name." (".$archivo_size/$u." kb)";
}
else
{
$url = "http://www.midominio.com/admin/archivos/";
$link=$url."/".$archivo_nom;

....etc

1) puedo delimitar de alaguna manera las fotos que se pueden subir, por tamaño o tipo de foto?

2) una vez tengo la foto en el servidor, ahora cuando borro, borro el registro de la bd, pero no del servidor. hay alguna manera de asociar que al borrar el registro, se borre la foto del servidor??

a ver si alguien puede echarme un cable.

salu2
  #2 (permalink)  
Antiguo 09/12/2004, 13:00
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
para el tema del borrado, he leido que hay una funcion que se llama unlink(), he mirado el manual pero no se hacerla funcionar correctamente. cuando borro, hago lo siguiente:

seleecciono el id mediante una combo, y ejecuto el siguiente script:

$sql="DELETE FROM noticias WHERE titulo='$titulo'";

como tendria que ejecutar el ulink, de que manera, para borrar la imagen del servidor?

los datos que guardo en el servidor, siguiendo lo explicado anteriormente, son los siguientes:

archivo tiene guardado

http://www.midominio.com/archivos/foto.jpg

se me borrar el campo, pero como borro el campo archivo del servidor? es decir, la foto

salu2
  #3 (permalink)  
Antiguo 09/12/2004, 13:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Bueno . .en principio la ruta del archivo que debes pasar a la función unlink() es de tipo absoluto .. no relativo como tu caso http:// ..... debe ser tipo /home/sitio1.tal/public_html o c:/nose/blabla/ o como corresponda +nombre archivo.

Si dices que por no sé que "combo" llegas a un "ID" de tu registro .. tendrás que hacer tu consulta SQL a tu BD por ese ID (WHERE .. id= ..id ) para llegar al nombre de tu archivo (con o sin ruta) ...

En Tu BD lo que deberías guardar son nombres de archivos . .no con el URL (que pasa si cambias de hosting? ...) a lo sumo tipo archivos/archivo.tal .. de esa forma puedes añadir a modo de "constante" algo tipo $_SERVER['DOCUMENT_ROOT'] que te devuelve la ruta absoluta de tu sitio en ese servidor y de ahí cuelgas lo que suele estar en un "public_html" de un servicio de hosting común (donde apunta tu DocumentROOT y cuelgas tus páginas que son accesibles vía http://www.tal.tal/.....)

Un saludo,
  #4 (permalink)  
Antiguo 10/12/2004, 01:43
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
gracias Cluster, pero sinceramente,no me he enterado de nada!!!

el problema del public_html, es que mi hosting es de la empresa, de pago, y no puedo modificar ningun parametro del php.ini.

lo que quiero conseguir primero es poder borrar un archivo del servidor. aunque sea de forma temporal, como seria el codigo para borrar el archivo asociado a un campo de la bd, que se encuentra en el servidor? ejmplo..

id:1,nombre:ferranWEB,foto:http://www.loquesea.com/archivos/foto.jpg

hago un delete where id='$id'...

que tengo que hacer a continuación para conseguir borrar el archivo del servidor??

salu2 y gracias
  #5 (permalink)  
Antiguo 10/12/2004, 05:08
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
alguna sugerencia o ayuda?
  #6 (permalink)  
Antiguo 10/12/2004, 07:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Primero tendrás que obtener ese campo de tu nombre del archivo!!! .. borrar tu archivo y luego el registro que cotiene ese dato.

Para tu unlink() .. ya te he comentado que no puedes pasarle un URL del tipo:
http://www.loquesea.com/archivos/foto.jpg

así que almenos tendrás que quedarte con el nombre del archivo con basename():
Código PHP:
unlink("archivos/".basename($tu_url)); 
no sé si todos tus archivos están en un sólo directorio o en otros . .pero ya te comenté (si es que todo está en un mismo directorio) que NO deberías almacenar un URL sino el nombre del archivo sólo .. (tomalo presente para otra vez!!)

Un saludo,
  #7 (permalink)  
Antiguo 10/12/2004, 09:57
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
gracias cluster, una cosilla...

en la sentencia que me has pasado...

unlink("archivos/".basename($trl));

se supone que basename es el valor del campo archivo de mi bd? es decir un

$basename=<?PHP echo $row["archivo"];?>

y luego pasar la url del directorio? o tre refieres a otra cosa

salu2
  #8 (permalink)  
Antiguo 10/12/2004, 10:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
basename() es una función .. si fuese una variable usaría $basename ..

www.php.net/basename

Esa funcion toma de un URL dato (o path completo) sólo el nombre del archivo (nose.tal .. o nose.tal.tal .. o lo que corresponda).

Un saludo,
  #9 (permalink)  
Antiguo 10/12/2004, 10:21
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
perdona mi ignorancia Cluster, y gracias por tu paciencia.. de la manera que me cuentas, tendria algo asi.. no?

$sql="DELETE FROM noticias WHERE titulo='$titulo'";
$resultados = mysql_query($sql);
$row = mysql_fetch_array($resultados);

$path = <?PHP echo $row["archivo"];?>
$file = basename($path); // $file toma el valor "index.php3"
unlink("archivos/".basename($file));

esto es correcto? pq no me hace nada...

salu2
  #10 (permalink)  
Antiguo 10/12/2004, 10:42
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
he probado con lo siguiente:

include("../conexion.php");
$sql="DELETE FROM noticias WHERE titulo='$titulo'";
$sql1="SELECT * FROM noticias WHERE titulo='titulo'";
$resultados = mysql_query($sql1);
$row = mysql_fetch_array($resultados);

$path = echo $row["archivo"];
$file = basename($path); // $file toma el valor "index.php3"(linia 10)
unlink("archivos/".$file;

y me da el siguiente error

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/loqsea-www/admin/noticias/borrar_noticia2.php on line 10
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 14:43.