- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这一定是一个重复的问题,但我在这里有不同的要求。我想要的是当用户单击“上传”按钮时,出现的对话框只允许用户上传 PDF 文件类型,而不是其他任何内容。
到目前为止,我所看到的是一旦用户上传文件,就会对文件类型进行检查。我不想让用户上传 pdf 以外的文件。
<?php
$allowedExts = array("pdf");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if (($_FILES["file"]["type"] == "application/pdf") && ($_FILES["file"]["size"] < 200000) && 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("doc_libraray/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
header('Location: '.site_url());
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"doc_libraray/" . $_FILES["file"]["name"]);
echo "Stored in: " . "doc_libraray/" . $_FILES["file"]["name"];
header('Location: '.$newURL);
}
}
}
else
{
echo "Invalid file";
}
?>
请提出实现它的方法!
最佳答案
您想要的是 HTML5,它有一个文件类型选择器用于 <input type="file" ... >
中的对话框HTML代码。
请参阅MDN documentation .
示例:
<input type="file" name="pdf" id="pdf" accept="application/pdf" >
来自 https://stackoverflow.com/a/7575533/3536236请注意,由于这个答案的年代久远,他们声明“这未被广泛接受” 但事实并非如此,input
accept
现在在 HTML5 标记中被广泛接受。
这不是 PHP 问题,因为 PHP 只能在文件上传后播放。 PHP 还应在上传后检查文件类型,因为 HTML 接受可能会被欺骗。
进一步澄清 - PHP 不在上传文件之前检查要上传的文件,因为 PHP 仅在服务器端工作。因此,我建议使用 HTML5 标记仅选择(看起来像)PDF 的文件,然后一旦上传,您的 PHP 脚本就可以检查文件类型的有效性,然后处理结果。
PHP 无法在文件上传前选择文件,这完全取决于最终用户浏览器和 HTML。
关于php - 如何在 PHP 中只上传 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30101298/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!