无法将图像上传到文件夹

时间:2017-02-18 15:12:37

标签: php file-upload

尝试让用户将图片上传到文件夹并查看但不会 工作。我有办法,所以人们可以上传他们的个人资料图片,但它不会让他们上传到那里的画廊。下面是它的代码。我得到的错误是文件不会创建文件并将图像上传到该文件夹​​,如此... user / robbie / myself / 94399549904fkfkmkd.png

if (isset($_FILES["photo"]["name"]) && isset($_POST["gallery"])){
$sql = "SELECT COUNT(id) FROM photos WHERE user='$log_username'";
$query = mysqli_query($db_conx, $sql);
$row = mysqli_fetch_row($query);
if($row[0] > 14){
    header("location: ../message.php?msg=The demo system allows only 15 pictures total");
    exit(); 
}
$gallery = $_POST["gallery"];

    $target_dir = "/user/$log_username/$gallery/";
 $target_file = $target_dir . basename($_FILES["photo"]["name"]);

  if (move_uploaded_file($_FILES["photo"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["photo"]["name"]). " has been   uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }

这是用户的表单

$photo_form  = '<form id="photo_form" enctype="multipart/form-data" method="post" action="photo_system.php?gallery=yes">';
$photo_form .=   '<h3>Hi '.$u.', add a new photo into one of your galleries</h3>';
$photo_form .=   '<b>Choose Gallery:</b> ';
$photo_form .=   '<select name="gallery" required>';
$photo_form .=     '<option value=""></option>';
$photo_form .=     '<option value="Myself">Myself</option>';
$photo_form .=     '<option value="Family">Family</option>';
$photo_form .=     '<option value="Pets">Pets</option>';
$photo_form .=     '<option value="Friends">Friends</option>';
$photo_form .=     '<option value="Random">Random</option>';
$photo_form .=   '</select>';
$photo_form .=   ' &nbsp; &nbsp; &nbsp; <b>Choose Photo:</b> ';
$photo_form .=   '<input type="file" name="photo" required>';
$photo_form .=   '<p><input type="submit" value="Upload Photo Now"></p>';
$photo_form .= '</form>';

1 个答案:

答案 0 :(得分:0)

当我在过去遇到类似的问题时,它通常与您将文件移动到不存在的目录有关,或者用户php正在运行,因为没有所需的权限写到那个位置。

首先,我要确保&#39; / user&#39;文件夹存在,并且用户php正在运行,因为可以写入它。临时修复,如果您在Linux上运行,可能是使用以下命令将该文件夹的权限设置为777(任何人都可以读取和写入):

chmod 777 /user

这将有助于排除php写入权限作为故障排除时的问题,但不应将其用作长期解决方案。相反,/ user文件夹的所有者应该设置为运行的用户php,然后将权限设置为755,这只允许该用户写入该位置。

另外,请记住,使用/启动路径会查看文件系统的根目录。如果文件夹位于您的网站目录中,则可能需要完整的绝对路径。例如/ var / www / user。

为了帮助找到它,可能有助于在php中使用getcwd()函数:

http://php.net/manual/en/function.getcwd.php

接下来,确保在写入目录之前创建目录。

  1. 使用is_dir():
  2. 检查目录是否存在

    http://php.net/manual/en/function.is-dir.php

    1. 如果需要,使用mkdir()创建目录:
    2. http://php.net/manual/en/function.mkdir.php

      您可能需要在用户名(/ user / $ log_username)和图库(/ user / $ log_username / $ gallery)级别执行上述步骤。