我有一个表单来上传文件,检查它是否到达的代码在这里:
if (is_uploaded_file($_FILES['foto'] ['tmp_name'])){
echo "file is valid and was uploaded";
print_r($_FILES);
}
它说:
file is valid and was uploadedArray ( [foto] =>
Array ( [name] => Penguins.jpg [type] => image/jpeg [tmp_name]
=> /var/www/uploads/phpf8ECTX [error] => 0 [size] => 777835 ) )
Array ( [foto] => Array ( [name] => Penguins.jpg [type] => image/jpeg [tmp_name]
=> /var/www/uploads/phpf8ECTX [error] => 0 [size] => 777835 ) ) array(1) {
["foto"]=> array(5) { ["name"]=> string(12) "Penguins.jpg" ["type"]=> string
(10) "image/jpeg" ["tmp_name"]=> string(26) "/var/www/uploads/phpf8ECTX" ["error"]
=> int(0) ["size"]=> int(777835) } }
但文件没有到达,php.ini配置正确并且/ var / www / uploads目录有权为所有用户编写,我在linux中运行apache2,任何关于什么是错的想法? 谢谢
答案 0 :(得分:3)
完成后,您必须move_uploaded_file
到上传目录。我的理解是,如果你没有明确地将文件保存到不同的文件夹,PHP将上传到临时文件夹并在之后删除它。
if (is_uploaded_file($_FILES['foto'] ['tmp_name'])){
if (file_exists("upload/" . $_FILES["foto"]["name"]))
{
//Maybe you want to issue an error message if the file already exists, like this.
echo $_FILES["foto"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["foto"]["tmp_name"],
"upload/" . $_FILES["foto"]["name"]);
}
}
请记住为您的上传设置不同的临时目录。
答案 1 :(得分:1)
is_uploaded_file()仅确认您引用的文件实际上是上传文件而不是系统文件,例如/ etc / passwd。您可以在此处详细了解:http://php.net/manual/en/function.is-uploaded-file.php
如果文件名命名的文件是通过HTTP POST上传的,则返回TRUE。 这有助于确保恶意用户未尝试过 欺骗脚本处理它不应该的文件 工作 - 例如,/ etc / passwd。
如果有任何机会,这种检查尤其重要 任何完成上传文件的内容都可以将其内容透露给 用户,甚至是同一系统上的其他用户。
验证文件名和属性后(根据您的具体要求),您必须调用move_uploaded_file()将文件从其临时位置移动到永久的家。
http://www.php.net/manual/en/function.move-uploaded-file.php
来自W3Schools的实际上传脚本的一个很好的示例:
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_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";
}
?>