使用php和mysql上传图像时:警告:file_get_contents():文件名不能为空

时间:2015-04-15 05:16:23

标签: php mysql image-uploading

当我试图将图像上传到照片文件夹时,我有这种警告信息我不知道该怎么做.. 这是我的php文件

if (!isset($_FILES['image']['tmp_name'])) {
    echo "";
    }else{
    $file=$_FILES['image']['tmp_name'];
    $image= mysql_real_escape_string(addslashes(file_get_contents($_FILES['image']['tmp_name'])));
    $image_name= addslashes($_FILES['image']['name']);

            move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]);

            $location="photos/" . $_FILES["image"]["name"];

            $save=mysql_query("insert into add values('$location')") or die("can not insert");
            exit();                 
    }

这是我的HTML代码

<form method="POST" action='ap.php' enctype="multipart/form-data">
<input name="image" id="image" type="file" />
<input type='submit' name='Add' value='Add'  />
</form>

5 个答案:

答案 0 :(得分:1)

不需要以下几行:

$image= mysql_real_escape_string(addslashes(file_get_contents($_FILES['image']['tmp_name'])));
$image_name= addslashes($_FILES['image']['name']);

刚删除它并测试它会起作用。你正在检查第一个if条件是否足够。

答案 1 :(得分:1)

你不需要逃避事情。只是喜欢,

if (!isset($_FILES['image']['tmp_name'])) {
    echo "Image not selected ";
  }

else
{
    $file=$_FILES['image']['tmp_name']; // temporary name
    $image_name= $_FILES['image']['name']; // original file name

     move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]);

     $location="photos/" . $_FILES["image"]["name"];
     $query = "Write your query here...";
     $save=mysqli_query($connection, $query);
     if($save)
      {
        // success...do whatever you want
       }
     else
      {
         // executes when save fails
       }      
    }

警告:

mysql_已弃用。迁移到mysqli_PDO。您的代码容易受到SQL注入攻击。

答案 2 :(得分:1)

您的代码工作正常,请检查照片&#39;必须是可写的。您也可以删除以下行,因为它没有效果。

$image= mysql_real_escape_string(addslashes(file_get_contents($_FILES['image']['tmp_name'])));

请粘贴完整代码,也可能是您的连接字符串或其他代码存在问题。

答案 3 :(得分:0)

无需转义文件name&amp; tmp_name。只需做 -

move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]);

$location="photos/" . $_FILES["image"]["name"];

$save=mysql_query("insert into add values('$location')") or die("can not insert");
exit();

答案 4 :(得分:0)

删除这两行后。它工作正常

$image= mysql_real_escape_string(addslashes(file_get_contents($_FILES['image']['tmp_name'])));
$image_name= addslashes($_FILES['image']['name']);