Foros del Web » Programando para Internet » PHP »

subir archivos secuencialmente

Estas en el tema de subir archivos secuencialmente en el foro de PHP en Foros del Web. señores! que tal, estoy haciendo un sitio (en flash 8) en el cual se pueden subir archivos (mp3) a una carpeta establecida en el php... ...
  #1 (permalink)  
Antiguo 14/01/2006, 18:03
Avatar de SAPINTO  
Fecha de Ingreso: junio-2005
Ubicación: just another fucked up pl
Mensajes: 777
Antigüedad: 12 años, 5 meses
Puntos: 0
subir archivos secuencialmente

señores!

que tal, estoy haciendo un sitio (en flash 8) en el cual se pueden subir archivos (mp3) a una carpeta establecida en el php...

ahora, esto esta hecho, los mp3 se suben exitosamente, pero lo que quiero es que al momento de subirse, vaya cambiando el nombre, entonces si subes "mitemon mp3", cambie automaticamente a "1.mp3" y si subes "misegundotemon.mp3", se vaya sumando a "2.mp3" y asi...


estoy usando este php para subir los archivos:

Código:
<?php
$uploadDir = 'basemp3/';
$uploadFile = $uploadDir . $_FILES['Filedata']['name'];
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
?>
seguramente es muy facil, pero no estoy familiarizado con este lenguaje...

bien, el sitio es este: http://www.bandas.cl, en catalogo, categoria rock, esta el formulario de registro.

gracias camaradas
__________________
if(user=="female" && user>="hot"){
user.gotoAndStop("sapinto's bed");
}
mi portafolio
  #2 (permalink)  
Antiguo 14/01/2006, 18:30
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
yo lo haría así:

Código PHP:
<?php
$i 
1;
# con este while busco el mayor número que existe ya como nombre.
while (file_exists("/ruta/a/la/carpeta/$i.mp3")) {
 
$i++;
 }

# ahora tengo en $i un número que no existe en la carpeta.
$nombre_archivo "$i.mp3";
?>
y ya con esto subes el archivo usando $nombre_archivo como nombre.

De todas formas, es quizás más sencillo comprobar si el archivo existe, y modificar el nombre en vez de cambiar el nombre siempre.

aquí mando una función para hacer esto, cualquier error me avisan, por favor.

Código PHP:
<?php

function no_sobreescribe($nombre_archivo$carpeta) {
$separador "___";

# tengo que reemplazar en el nombre original cualquier ocurrencia de "___"
 
$sin_separador ereg_replace($separador"_"$nombre_archivo);

 
# si el archivo no existe en la carpeta destino, no hago nada.
 
if ( !file_exists($carpeta.$sin_separador) ) {
  
$nombre_correcto $sin_separador;
  }
 else {
  
$nombre_temp $sin_separador;
  
$nombre_sep $separador.$nombre_temp;
  
$i 0;
  while ( 
file_exists($carpeta.$nombre_temp) ) {
   
$nombre_temp $i.$nombre_sep;
   
$i++;
   }
  
$nombre_correcto $nombre_temp;
  }  

 return 
$nombre_correcto;
 }
?>

Saludos.
  #3 (permalink)  
Antiguo 14/01/2006, 18:45
Avatar de SAPINTO  
Fecha de Ingreso: junio-2005
Ubicación: just another fucked up pl
Mensajes: 777
Antigüedad: 12 años, 5 meses
Puntos: 0
buena compadre, lo pruebo y te aviso

__________________
if(user=="female" && user>="hot"){
user.gotoAndStop("sapinto's bed");
}
mi portafolio
  #4 (permalink)  
Antiguo 14/01/2006, 19:09
Avatar de SAPINTO  
Fecha de Ingreso: junio-2005
Ubicación: just another fucked up pl
Mensajes: 777
Antigüedad: 12 años, 5 meses
Puntos: 0
no me funciona...

me podrias decir como seria el code aplicado a mi php? sorry la molestia, pero en php soy 0 a la izquierda...
__________________
if(user=="female" && user>="hot"){
user.gotoAndStop("sapinto's bed");
}
mi portafolio
  #5 (permalink)  
Antiguo 14/01/2006, 19:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
dado que ya sabes cómo subir y mover el archivo a la ubicación que quieras, la función que pegué no es difícil:

recibe 2 parámetros:
-> $nombre_archivo: el nombre del archivo subido (tal como lo tenía el usuario en su máquina)
-> $carpeta: carpeta, SIN "/" al final, en la que guardar el archivo.

A partir de estos datos, la función devuelve un nombre apropiado para no sobreescribir ningún archivo existente en $carpeta.

Por lo tanto, para usarla lo que debes hacer es:
1.- la copias en tu archivo php o la pegas en un archivo aparte.
si la pegas en un archivo aparte, debes usar include() para traerla.

2.- la llamas de la siguiente forma:

Código PHP:
# la variable $nombre contendrá el nombre 'final' del archivo.
# asumo que ya guardaste el nombre original en $nom_orig
$carpeta $_SERVER['DOCUMENT_ROOT']."/carpeta/desde/la/raiz/del/sitio";
$nombre no_sobreescribe($nom_orig$carpeta); 
Luego procesas el archivo normalmente, solo que cuando lo vayas a mover usas $nombre como parámetro de move_uploaded_file() (que supongo que es lo que usas)


Saludos.
  #6 (permalink)  
Antiguo 14/01/2006, 19:24
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
disculpame por el mensaje anterior, estoy haciendo varias cosas y a veces no leo lo que escribes.
Aplicado a tu php,
$carpeta = $uploadDir
$nombre_archivo = $_FILES['Filedata']['name']

y la 3º línea cambia a
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadDir.$nombre);

(siendo $nombre la variable de mi segundo mensaje)

Saludos y disculpa mi distracción.
  #7 (permalink)  
Antiguo 14/01/2006, 19:35
Avatar de SAPINTO  
Fecha de Ingreso: junio-2005
Ubicación: just another fucked up pl
Mensajes: 777
Antigüedad: 12 años, 5 meses
Puntos: 0
muchas gracias amigo!!
__________________
if(user=="female" && user>="hot"){
user.gotoAndStop("sapinto's bed");
}
mi portafolio
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 10:09.