我有一个PHP脚本只能上传文件.txt并且有效。
<?php
$allowedExts = array("txt");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$dest = "/etc/squid/squid.conf";
if ((($_FILES["file"]["type"] == "text/plain")
&& ($_FILES["file"]["size"] < 170000)
&& in_array($extension, $allowedExts)))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "<div style='text-align: center'>";
echo "Upload File Success!!<br><br>";
echo "FIle : " . $_FILES["file"]["name"] . "<br>";
echo "Type : " . $_FILES["file"]["type"] . "<br>";
echo "Size : " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "</div>";
move_uploaded_file($_FILES["file"]["tmp_name"],
"/var/www/squid_proxy/upload/" . $_FILES["file"]["name"]);
copy("/var/www/squid_proxy/upload/" . $_FILES["file"]["name"],
$dest);
}
}
else
{
echo "<div style='text-align: center'>";
echo "Error, File upload only .txt";
echo "</div>";
}
?>
文件类型和mime验证是有效的,但我想要文件txt内容验证。例, txt文件内容必须包含标题
example.txt中
#ADVANCED
#WIZARD
在txt文件上传到服务器之前,必须检查文件内容标题,第一行应该有#ADVANCED,第三行应该有#WIZARD,如果用户上传txt文件没有那样的标题或者空/空白文件应显示错误信息。
如何检查或验证文件上传的内容?
抱歉我的英文不好,谢谢:)
答案 0 :(得分:1)
此处$line[0]
是第1行,$line[2]
是第3行。file()
将整个文件读入数组。
$lines = file($myFile); //file lines into an array
if (strip($lines[0]) == '#ADVANCED' && strip($lines[2]) == '#WIZARD'){
//success
}
编辑(由@barmar建议)
将strip()
添加到变量$lines[0]
和$lines[2]
以修剪/n
字符。
答案 1 :(得分:0)
使用file
功能。它会返回你txt-file的行数。
$lines = file($filename);
// Then you can check if
if ($lines[0] == '#ADVANCED' && $lines[2] == '#WIZARD') {
// do some stuff
}