PHP文件上传不保存文件
我想写一个PHP上传程序,将文件保存到我的FTP上 我发现这个脚本:PHP文件上传不保存文件,php,file,upload,ftp,save,Php,File,Upload,Ftp,Save,我想写一个PHP上传程序,将文件保存到我的FTP上 我发现这个脚本: <?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
<?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";
}
?>
但是我在FTP上找不到文件
我做错了什么?请检查move\u上传的\u文件的返回值。如果文件名不是有效的上载文件,或者移动文件内容时出错,move_uploaded_file将返回false。请检查move_uploaded_file的返回值。如果文件名不是有效的上载文件,或者移动文件内容时出现问题,则move_uploaded_file将返回false。请查看以下内容: 您需要在尝试移动文件时进行一些错误处理,因为在实际尝试移动文件之前,您目前只检查
IF$\u FILES[“file”][“error”]>0
因此,在移动临时文件之前,您的代码只确认临时文件上没有错误
请从以下方面考虑这些陈述:
如果文件名不是有效的上载文件,则不会执行任何操作,并且
move\u上传的\u file()将返回FALSE
如果文件名是有效的上载文件,但某些文件无法移动
原因是,不会发生任何操作,并且将返回move\u上传的\u file()
错。此外,将发出警告
因此,在使用临时文件之前,您可以正确地检查临时文件是否正常且没有错误,但您还需要从move\u upload\u file()
函数中捕获错误,以确保移动是正确的还是错误的
执行以下操作(我刚刚修改了您的代码,在移动上传的文件()
周围添加了一个IF)
然后错误数组应该输出出错的内容。Ie(可能)上传错误无法写入。然后,这将向您指出问题所在,而且在代码中添加这样的内容也是很好的,因此您的脚本将优雅地失败,而不是什么都没有发生(不应该出现什么都没有发生的情况!)请看一下:
您需要在尝试移动文件时进行一些错误处理,因为在实际尝试移动文件之前,您目前只检查IF$\u FILES[“file”][“error”]>0
因此,在移动临时文件之前,您的代码只确认临时文件上没有错误
请从以下方面考虑这些陈述:
如果文件名不是有效的上载文件,则不会执行任何操作,并且
move\u上传的\u file()将返回FALSE
如果文件名是有效的上载文件,但某些文件无法移动
原因是,不会发生任何操作,并且将返回move\u上传的\u file()
错。此外,将发出警告
因此,在使用临时文件之前,您可以正确地检查临时文件是否正常且没有错误,但您还需要从move\u upload\u file()
函数中捕获错误,以确保移动是正确的还是错误的
执行以下操作(我刚刚修改了您的代码,在移动上传的文件()
周围添加了一个IF)
然后错误数组应该输出出错的内容。Ie(可能)上传错误无法写入。然后,这将向您指出问题所在,而且在您的代码中包含这一点也很好,因此您的脚本将优雅地失败,而不是什么都没有发生(不应该出现什么都没有发生的情况!)所以解决方案是设置权限0775…所以解决方案是设置权限0775…,您绝对肯定,对
上传/
目录有写入权限?那么这个问题解决了吗?如果是这样的话,你应该自己选择一个答案或添加一个答案,然后选择那个答案。而且你绝对肯定,upload/
目录有写权限?那么这个问题解决了吗?如果是这样的话,你应该选择一个答案,或者自己添加一个,然后选择那个答案。代码运行得很好。当我测试它时,它会按预期上传文件,在我确保了写权限并将$\u files[“file”][“size”]<20000)
更改为更正常/更大的值:-)代码工作正常。当我测试它时,在我确保了写权限并将$\u files[“file”][“size”]<20000)
更改为更正常/更大的值后,它会按预期上传文件:-)
Upload: bier15291.jpg
Type: image/jpeg
Size: 158.26171875 kB
Temp file: /mnt/shared/tmp/php_0aOep
Stored in: upload/bier15291.jpg
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
if (move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]))
{
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
else
{
//output the errors here (ie using $_FILES["file"]["error"])
}
}