Foros del Web » Programando para Internet » PHP »

upload se me sobre escribe el archivo

Estas en el tema de upload se me sobre escribe el archivo en el foro de PHP en Foros del Web. HOLA A TODOS!!! estuve buscnado en las FAQ t consegui el codigo que quiero que es para subir archivos la servidor, y bueno modifique peñas ...
  #1 (permalink)  
Antiguo 12/11/2003, 16:56
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 21 años, 3 meses
Puntos: 0
upload se me sobre escribe el archivo

HOLA A TODOS!!! estuve buscnado en las FAQ t consegui el codigo que quiero que es para subir archivos la servidor, y bueno modifique peñas cosas del codigo para que se ajustara a mis necesidades, como es que me suba un solo archivos en ves de 2 o mas. pero el problema es que cuando subo un segundo archivo, pues siempre me guarda el archivo subido con el siguiente nombre: LA_RUTA_DE_TU_CARPETANUEVO_NOMBRE_DE_TU_ARCHIVO_ y con la extecion del archivo, es deci si subo un .doc y luego intento subir de nuevo otro documento . doc diferente pues el primero lo pierdo porque se me sobre escribe por guardarse con el mismo nombre, ¿que sucede? ¿que tengo que cambiar en el codigo para que me tome el nombre original del archivo que tiene en la maquina de donde proviene el archivo? Ojo pregunto esto porque de verdad como ya he dicho anteriromente soy nuevo en php y casi no entiendo el codigo abajo escrito, pues hay ciertos codigos que no se que hacen. GRACIAS POR LOS QUE TIENE PASCIENCIA Y EMPLEARAN UN TIEMPO A RESPONDER ESTE MENSAJE BYE

Este es el codigo del formulario de donde tomo el archivo y lo envio a la pagina php que sube el archivo
Código:
<form enctype="multipart/form-data" method="post" action="subir.php">
  Archivo: 
  <INPUT NAME="userfile[]" TYPE="file"><br>

<input type="submit" name="Submit" value="Submit">

</form>

Este es el codigo de la pagina php que sube el archivo
Código PHP:
<?
$N 
1//Número de archivos a Subir

for($i=0$i<$N$i++) {

if  (
is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i])) {

$split_path split("/"$HTTP_POST_FILES['userfile']['name'][$i]);
$split_path end ($split_path);
$extension split("[/.]"$split_path);

if (
end($extension) == "php" || end($extension) == "php3") {

echo 
"tipo de archivo invalido";

} else {

$RUTA_UPLOADED "LA_RUTA_DE_TU_CARPETA";

$NOMBRE_FILE "NUEVO_NOMBRE_DE_TU_ARCHIVO_" "." end($extension);

 
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED $NOMBRE_FILE);

}
}
}

?>
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #2 (permalink)  
Antiguo 12/11/2003, 18:10
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
La variable $NOMBRE_FILE debe generarse dinamicamente de alguna manera, por ejemplo asignandole $HTTP_POST_FILES['userfile']['name'][$i].
El asunto es que move_uploaded_file() recibe dos parametros, el nombre que se genera automaticamente para el archivo (un nombre temporal definido por el sistema), y un nombre final con el cual se grabará en el servidor y que tú eliges; entonces traslada este archivo temporal desde una carpeta temporal hasta la nueva direccion con el nuevo nombre. Por tanto, si tu no quieres cambiarle el nombre que tenia en el cliente usa ese nombre, y quedaria asi:

move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'][$i], $RUTA_UPLOADED . $HTTP_POST_FILES['userfile']['name'][$i]);

explicacion:

$HTTP_POST_FILES['userfile']['tmp_name'][$i]: contiene el nombre temporal que se ha dado (por el sistema) al archivo subido. Este archivo se encuentra en un directorio tmp del servidor.

$HTTP_POST_FILES['userfile']['name'][$i]: contiene el nombre real que el archivo tiene en el cliente, es decir, en el computador de quien esta subiendo el archivo.
__________________
Dedicado a proyectos web, actualmente desarrollando un sistema de diseño de flyers online muy fácil de usar.
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 21:17.