我在 PHP 中上传了一个文件,
它在数组 $_FILES 中,tmp_name上写着他的名字,但实际上文件还没有上传,为什么会这样? 如果tmp_name已填满,这是否意味着它应该被上传? 因为我什至将文件夹设置为 0777, 仍然无法上传,在 phpinfo();- 一切都在...请帮忙
foreach($_FILES as $file)
{
foreach($file['tmp_name']['new'] as $name) {
echo '<br />'.$name.'<br />';
if(is_uploaded_file($name))
{
echo '1';
}
else
{
echo '0'; // shows this
}
//$res = move_uploaded_file($name, "/uploads");
//echo $res;
}
exit;
}
//exit;
is_uploaded_file - 返回假
Array
(
[name] => Array
(
[new] => Array
(
[prikrepit_fajl] =>
[prikrepit_fajl1] =>
[prikrepit_fajl3] => ava.png
[prikrepit_fajl333] => ava.png
[prikrepit_fajl55555555] =>
)
)
[type] => Array
(
[new] => Array
(
[prikrepit_fajl] =>
[prikrepit_fajl1] =>
[prikrepit_fajl3] => image/png
[prikrepit_fajl333] => image/png
[prikrepit_fajl55555555] =>
)
)
[tmp_name] => Array
(
[new] => Array
(
[prikrepit_fajl] =>
[prikrepit_fajl1] =>
[prikrepit_fajl3] => /home/users1/v/vizitka77/tmp/phppOtsIp
[prikrepit_fajl333] => /home/users1/v/vizitka77/tmp/phpgY6RQ9
[prikrepit_fajl55555555] =>
)
)
[error] => Array
(
[new] => Array
(
[prikrepit_fajl] => 4
[prikrepit_fajl1] => 4
[prikrepit_fajl3] => 0
[prikrepit_fajl333] => 0
[prikrepit_fajl55555555] => 4
)
)
[size] => Array
(
[new] => Array
(
[prikrepit_fajl] => 0
[prikrepit_fajl1] => 0
[prikrepit_fajl3] => 25352
[prikrepit_fajl333] => 25352
[prikrepit_fajl55555555] => 0
)
)
)
需要指出的重要一点是:如果您在请求期间没有保存上传的文件,PHP 会在请求终止时将其删除,因此文件将消失。
其次,您错误地循环了数组。 您应该尝试使用 for 循环:
for ($i = 0; $i < sizeof($_FILES['new']['tmp_name']); ++$i) {
$name = $_FILES['new']['name'][$i];
$path = $_FILES['new']['tmp_name'][$i];
$err = $_FILES['new']['error'][$i];
if ($err != UPLOAD_ERR_OK) {
// check error code
// report error
continue;
}
if (is_uploaded_file($path)) {
// do something with the file
}
}
编辑:在您的注释代码中,move_uploaded_file($name, "/uploads");
不是移动文件的正确语法。
它应该看起来更像:
move_uploaded_file($path, "uploads/{$name}");
注意:如果您尚未检查文件内容和扩展名,则上述情况很危险。 请非常小心,不要允许上传带有.php或其他可执行扩展名的文件。
你应该阅读以下内容: http://php.net/manual/en/function.is-uploaded-file.php
而这个:http://php.net/manual/en/features.file-upload.php
看起来您访问 $_FILES 不正确。
foreach($_FILES['tmp_name']['new'] as $inputName => $file)
{
// $inputName is the name attribute from the HTML form
echo '<br />'.$file.'<br />';
if( is_uploaded_file($file) )
{
echo '1';
}
else
{
echo '0';
}
//$file = umiImageFile::upload('uploads',$name,'uploads','new');
//$res = move_uploaded_file($name, "/uploads");
//echo $res;
}