PHP只上传图片错误!如何解决这个问题?
可能重复:PHP只上传图片错误!如何解决这个问题?,php,file-upload,restriction,Php,File Upload,Restriction,可能重复: 您好,在php中有一个上载脚本问题。我试图让它只接受图像,但我得到了一个错误,我不知道如何修复它。当我删除唯一的图像部分时,效果很好。我希望有人能帮我:) 我得到的错误代码是: 严格标准:只有变量才能通过引用传递 第3行的C:\xampp\htdocs\upload\u file.php无效文件 upload_file.php代码: <?php $allowedExts = array("jpg", "jpeg", "gif", "png"); $extension = en
您好,在php中有一个上载脚本问题。我试图让它只接受图像,但我得到了一个错误,我不知道如何修复它。当我删除唯一的图像部分时,效果很好。我希望有人能帮我:) 我得到的错误代码是: 严格标准:只有变量才能通过引用传递 第3行的C:\xampp\htdocs\upload\u file.php无效文件 upload_file.php代码:
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
提前谢谢 不能对explode()
的结果调用end()
,因为它需要一个变量作为第一个参数
根据:
阵列。此数组是通过引用传递的,因为它是由
功能。这意味着您必须传递一个实变量,而不是
函数返回数组,因为只能返回实际变量
通过引用传递
这样做:
$foo = explode('.', $_FILES['file']['name']);
$extension = end($foo);
另一种方法是停用严格的错误检查,但我想最好是删除错误。不能对explode()
的结果调用end()
,因为它需要一个变量作为第一个参数
根据:
阵列。此数组是通过引用传递的,因为它是由
功能。这意味着您必须传递一个实变量,而不是
函数返回数组,因为只能返回实际变量
通过引用传递
这样做:
$foo = explode('.', $_FILES['file']['name']);
$extension = end($foo);
另一种方法是停用严格的错误检查,但我想最好是删除错误。嗯……我想
end()
被定义为使用引用……而explode()
的结果不是引用……只有变量可以包含引用。或者类似的东西。我只是试了一下,看起来是那样的。使用临时变量时,没有严格的注意事项。可能又是一些奇怪的PHP怪癖显然,它在文档中,添加到您的答案中。我很少使用end()
,所以我从来不知道。嘿,谢谢你的回答!但是现在它不接受任何图片,它总是给出错误:无效文件我想我会删除限制好吧…我想end()
被定义为使用引用…而explode()
的结果不是引用…只有变量可以包含引用。或者类似的东西。我只是试了一下,看起来是那样的。使用临时变量时,没有严格的注意事项。可能又是一些奇怪的PHP怪癖显然,它在文档中,添加到您的答案中。我很少使用end()
,所以我从来不知道。嘿,谢谢你的回答!但现在它不接受任何图片,它总是给出错误:无效文件我想我会取消限制