将上传的图像移动到php中的文件夹中(move_uploaded_file()函数)

时间:2016-06-30 12:44:05

标签: php mysql database image move

移动上传文件时遇到问题。

<?php
$image_name = $_FILES['image']['name'] ;
$target_file = "../uploads/$image_name";
$targetFileForItem = "uploads/$image_name";

move_uploaded_file($_FILES['image']['tmp_name'], $target_file);


$sql = "INSERT INTO items (name , description,`price`, `country`, `release`, `condition`, `image`) 
        VALUES ('$name','$description','$price', '$country', '$date', '$condition', '$targetFileForItem')" ;

?>

变量$targetFileForItem工作正常,并且很好地插入到我的数据库中,但该文件没有移到$target_file var的文件夹中,即uploads 。如你所见,我使用move_uploaded_file()函数,但我没有工作。有什么建议吗?

3 个答案:

答案 0 :(得分:0)

检查您对上传文件夹的权限必须是775.如果您使用FTP而不是右键单击文件夹并将该文件夹的文件权限更改为755。 如果是localhost,那么它必须是路径或文件夹名称问题。

并使您的代码成为这样,这样您也可以找到错误。

<?php
$image_name = $_FILES['image']['name'] ;
$target_file = "../uploads/$image_name";
$targetFileForItem = "uploads/$image_name";

// if folder not exists than it will make folder.

if(!file_exists($target_file))
{
       mkdir($target_file, 0777, true);
}

if(move_uploaded_file($_FILES['image']['tmp_name'], $target_file))
{
      echo "file successfully uploaded";       
}
else
{
      echo "error in file upload";
}

?>

答案 1 :(得分:0)

将此内容写入debug

ini_set('display_errors',1);
error_reporting(E_ALL);

如果您的代码没问题,请检查file permissions您可以使用此

if (is_dir($target_file ) && is_writable($target_file )) {
    // do upload logic here
} else {
    echo 'Upload directory is not writable, or does not exist.';
}

is_writable Returns TRUE如果文件名存在且为writable。 filename参数可以是一个目录名,允许您检查目录是否可写

了解更多信息,请阅读此http://php.net/manual/en/function.is-writable.php

答案 2 :(得分:0)

  <?php
  $file = $_FILES['profilepic']['name'];
                $tmp = $_FILES['profilepic']['tmp_name'];
                $ext = pathinfo($file, PATHINFO_EXTENSION);
                $image = rand(1000, 1000000).$file;
                $path = 'your_path_with_end_slashes/'.$image;
                move_uploaded_file($tmp, $path);

        $insert = $db->query("INSERT into user (`avatar`) VALUES('$image')");
       ?>

其中,头像是您的表字段名称,而profilepic是输入类型文件名