PHP相册:move_uploaded_file不起作用

时间:2014-11-10 21:29:18

标签: php

我是php的初学者,需要帮助。

我正在处理一张简单的相册,并试图将照片上传到我从该选项中选择的相册文件夹,但是收到的错误是"没有这样的文件或目录"并且"无法移动"。

我尝试更改" $ album_name"参与" $ row [' name']"或" $ album_id",但没有一个有效。但是,设置固定网址是有效的(例如'上传/ bla /'。$ random_name。' .jpg')。

如何在路径中包含我选择的相册名称?当前上传的文件存储在文件夹之外(在"上传"文件夹中)。


 <form enctype='multipart/form-data' method='post'>

    Select album: <br/>              
    <select name='album'>
    <?php
    $query = mysqli_query($dbc, "SELECT id, name FROM albums ORDER BY id DESC");

    while($row = mysqli_fetch_array($query)) {
      $album_id = $row['id'];
      $album_name = $row['name'];
      echo "<option value=".$album_id.">".$album_name."</option>";
    }
    ?>
    </select><br/><br/>  

    <?php
      if(isset($_POST['upload'])) {

        $album_id = $_POST['album'];
        $file = $_FILES['file']['name'];
        $file_tmp = $_FILES['file']['tmp_name'];
        $random_name = rand();

        if(empty($file)) { 
          echo "Please choose a file to upload.<br/> <br/>";
        } else {

          move_uploaded_file($file_tmp, 'uploads/'.**$album_name**.'/'.$random_name.'.jpg');

          mysqli_query ($dbc, "INSERT INTO pictures VALUES('', '$album_id', '$random_name.jpg')");
          echo "Photo uploaded!!!<br/> <br/> ";
        }
      }
    ?>

   Select photo: <br/>
    <input type='file' name='file' /><br/><br/>
    <input type='submit' name='upload' value='Upload' />
  </form>   

1 个答案:

答案 0 :(得分:0)

当你遇到这样的错误时,有很多事情需要考虑。

  1. 目录是否存在?目录“uploads”可能有另一个名称。
  2. 目录是否有正确的chmod?如果你在Windows上开发,那没问题。但是在Linux上,一旦目录是0600并且所有者是您的用户, 就是一个巨大的问题。在这种情况下,要么将目录chmod到0777(这可能是一个巨大的安全风险),要么将所有者更改为守护程序或用户Apache(或您的网络服务器)运行。
  3. 文件大小大于php.ini中的指令。是的,PHP有一个配置文件php.ini,其中设置了最大上传文件大小。如果您在Linux上找到该文件,请运行find / -name php.ini。默认情况下,最大文件大小为2MB。
  4. 您还应尝试通过$_FILE["file"]["error"]处理错误,以查看更详细的错误。错误列表可在官方PHP文档中找到:http://php.net/manual/en/features.file-upload.errors.php