2011-11-21 37 views
11

Tengo un formulario de carga en el que los usuarios pueden cargar imágenes que actualmente se cargan en una carpeta que hice llamada 'temp' y sus ubicaciones se guardan en una matriz llamada $ _SESSION ['uploaded_photos']. Una vez que el usuario presiona el botón 'Página siguiente', quiero que mueva los archivos a una nueva carpeta que se crea dinámicamente justo antes de eso.¿Cómo puedo mover un archivo a otra carpeta usando php?

if(isset($_POST['next_page'])) { 
    if (!is_dir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id'])) { 
    mkdir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id']); 
    } 

    foreach($_SESSION['uploaded_photos'] as $key => $value) { 
    $target_path = '../images/uploads/listers/'.$_SESSION['loggedin_lister_id'].'/'; 
    $target_path = $target_path . basename($value); 

    if(move_uploaded_file($value, $target_path)) { 
     echo "The file ". basename($value). " has been uploaded<br />"; 
    } else{ 
     echo "There was an error uploading the file, please try again!"; 
    } 

    } //end foreach 

} //end if isset next_page 

Un ejemplo de un valor de $ que se utiliza es:

../images/uploads/temp/IMG_0002.jpg

Y un ejemplo de un $ TARGET_PATH que se utiliza es:

../images/uploads/listers/186/IMG_0002.jpg

Puedo ver el archivo sentado en la carpeta temporal, ambos caminos se ven bien para mí y verifiqué para asegurarme de que la función mkdir realmente creara la carpeta que lo hizo bien.

¿Cómo puedo mover un archivo a otra carpeta usando php?

Respuesta

20

Al leer su escenario, parece que ha manejado la carga y movido los archivos a su carpeta 'temp', y ahora desea mover el archivo cuando realizan una nueva acción (haciendo clic en el botón Siguiente)

En lo que respecta a PHP: los archivos en su 'temp' ya no son archivos cargados, por lo que ya no puede usar move_uploaded_file.

Todo lo que necesita hacer es usar rename:

if(isset($_POST['next_page'])) { 
    if (!is_dir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id'])) { 
    mkdir('../images/uploads/listers/'.$_SESSION['loggedin_lister_id']); 
    } 

    foreach($_SESSION['uploaded_photos'] as $key => $value) { 
    $target_path = '../images/uploads/listers/'.$_SESSION['loggedin_lister_id'].'/'; 
    $target_path = $target_path . basename($value); 

    if(rename($value, $target_path)) { 
     echo "The file ". basename($value). " has been uploaded<br />"; 
    } else{ 
     echo "There was an error uploading the file, please try again!"; 
    } 

    } //end foreach 

} //end if isset next_page 
Cuestiones relacionadas