Foros del Web » Programando para Internet » PHP »

nunca sobrescribir un archivo cargado en el servidor

Estas en el tema de nunca sobrescribir un archivo cargado en el servidor en el foro de PHP en Foros del Web. Hola, escribi un script para cargar archivos al servidor, fotos en formato jpg, lo que quiero es que nunca sobraescriba una foto que tenga el ...
  #1 (permalink)  
Antiguo 26/09/2009, 14:55
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
nunca sobrescribir un archivo cargado en el servidor

Hola, escribi un script para cargar archivos al servidor, fotos en formato jpg, lo que quiero es que nunca sobraescriba una foto que tenga el mismo nombre, es decir si tengo ya en el servidor una foto llamada, foto.jpg y otro usuario sube otra foto con el mismo nombre no sobreescriba la ya existente en mi servidor.
Muestro mi codigo:
Código PHP:
<?PHP
$size
=$_FILES["fichero"]["size"];
$type=$_FILES["fichero"]["type"];
$tmp=$_FILES["fichero"]["tmp_name"];
$nombre=$_FILES["fichero"]["name"];

if (
$size>=100000){
        die(
"el archivo es muy grande");
    }
    elseif
    (
$type!="image/jpeg"){
        die(
"el archivo no esta en formato jpg");
    }
    
    if
    (
move_uploaded_file($tmp,"ficheros/$nombre")){
        echo
"archivo cargado";
        
    }
    else
    {
        echo
"el archivo no se cargo";
    }
    
?>
  #2 (permalink)  
Antiguo 26/09/2009, 15:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: nunca sobrescribir un archivo cargado en el servidor

pues primero, debes comprobar que el archivo no existe...

y eso lo consigues usando la función is_file()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/09/2009, 16:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: nunca sobrescribir un archivo cargado en el servidor

Creo que la funcion correcta seria la is_file_exists
puse algo asi:
Código PHP:
<?PHP
$size
=$_FILES["fichero"]["size"];
$type=$_FILES["fichero"]["type"];
$tmp=$_FILES["fichero"]["tmp_name"];
$nombre=$_FILES["fichero"]["name"];


if (
$size>=100000){
        die(
"el archivo es muy grande");
    }
    elseif
    (
$type!="image/jpeg"){
        die(
"el archivo no esta en formato jpg");
    }
    
elseif(
file_exists("/home/th3r0rn/www/php/ficheros/ficheros/$nombre")){
    die(
"el archivo ya existe en el servidor");
}
    
    if
    (
move_uploaded_file($tmp,"ficheros/$nombre")){
        echo
"archivo cargado";
        
    }
    else
    {
        echo
"el archivo no se cargo";
    }
    
?>
pero quiero hacer que el script automaticamente renombre el archivo a otro, es decir, enves de imprimirme el mensaje de q el archivo ya existe con ese nombre me gustaria que lo alamacenara automaticamente con otro nombre q no este utilizadno otro archivo dentro del servidor.
  #4 (permalink)  
Antiguo 26/09/2009, 16:36
 
Fecha de Ingreso: enero-2009
Ubicación: Chile
Mensajes: 191
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: nunca sobrescribir un archivo cargado en el servidor

PUPues eso es facil, solo tiene que ponerte a pensar un poco y usar ingenieria de programación xd... Bueno, lo que podrias hacer es crear simplmente un id, dentro de una base de datos con los datos de la foto, e ir guardando según el id, o tambien podrias crear numeros aletorios con la función rand();

Aunque hay muchas formas, yo te recomiendo que crees un archivo o una tabla en la cual indiques en que numero va a ir guardando, aunque si me explcias mejor que lo que haras con la foto, podria darte mas ayudas.
  #5 (permalink)  
Antiguo 26/09/2009, 17:06
 
Fecha de Ingreso: noviembre-2007
Mensajes: 504
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: nunca sobrescribir un archivo cargado en el servidor

NO tengo un proosito en especial solo quiero aprender como hacer esto en caso de tener que necesitarlo.
  #6 (permalink)  
Antiguo 26/09/2009, 18:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: nunca sobrescribir un archivo cargado en el servidor

ese el mismo algoritmo...

si necesitas obtener 10 números distintos usando rand() ???

pues creas una lista, donde se almacenen los números ya predichos...

ahora, si se trata de archivos... pues simplemente comparas que el archivo fooN.algo no existe en realidad... y eso lo haces concatenando el nombre del archivo con el sufijo numérico...

Código PHP:
do {
  
$foo $name rand();
}
while (
is_file($foo)) 
osea, crea un nuevo nombre de archivo... mientras exista ya alguno!!

y si, para eso no necesitas de foros... ni nada por el estilo, solo debes documentarte... y.... ¡¡¡usar toda tu creatividad e ingenio!!!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 26/09/2009, 20:04
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: nunca sobrescribir un archivo cargado en el servidor

¬¬ haz un archivo.txt le escribes 0 y cada que suban un archivo le das la orden de +1 o ++ y asi sele irá sumando 1.

Ese txt lo incluyes con "include" para que lo tomes como variable y así jamás se te sobreescribiran ;)
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.
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 06:23.