首页 文章

如何使用php将文件移动到另一个文件夹?

提问于
浏览
11

我有一个上传表单,用户可以将当前正在上传的图像上传到我所谓的'temp'文件夹,并将它们的位置保存在名为$ _SESSION ['uploaded_photos']的数组中 . 一旦用户按下“下一页”按钮,我希望它将文件移动到之前动态创建的新文件夹 .

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
"; } else{ echo "There was an error uploading the file, please try again!"; } } //end foreach } //end if isset next_page

正在使用的$值的示例是:

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

并且正在使用的$ target_path的示例是:

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

我可以看到文件位于临时文件夹中,这两个路径对我来说都很好看,我检查确保mkdir函数实际上创建了它做得很好的文件夹 .

如何使用php将文件移动到另一个文件夹?

1 回答

  • 20

    在我阅读您的场景时,看起来您已经处理了上传并将文件移动到“temp”文件夹,现在您想要在执行新操作时单击文件(单击“下一步”按钮) .

    就PHP而言 - 'temp'中的文件不再是上传文件,因此您不能再使用move_uploaded_file .

    您需要做的就是使用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
    "; } else{ echo "There was an error uploading the file, please try again!"; } } //end foreach } //end if isset next_page

相关问题