在 Codeigniter 如何检查上传的文件实际上是 pdf 还是 jpg 或 png?因为,如果我们上传一个带有 .pdf 扩展名的 .exe 文件,那么它也可以毫无问题地上传。因此,它有一种正确的方法来实际检查文件及其内容,以便能够确定它实际上是 pdf 还是 exe。因为只要文件扩展名就可以上传任何东西。请帮我找到一个合适的解决方案。是否有任何本机 php 函数可以实现这一点。如果是这样,示例代码可能会有所帮助。
1194 次
2 回答
1
您可以使用内置于 php 中的mime_content_type()函数,即使扩展名已更改,它也会提供实际的内容类型 php docs
<?php
echo mime_content_type('abcd.pdf') //application/pdf
?>
上传时检查 mime_content_type
$mimetype = mime_content_type($_FILES['file']['tmp_name']);
if(in_array($mimetype, array('image/jpeg', 'image/gif', 'image/png'))) {
move_uploaded_file($_FILES['file']['tmp_name'], '/whatever/something/imagedir/' . $_FILES['file']['name']);
echo 'OK';
} else {
echo 'It is not an image';
}
于 2018-07-13T09:04:33.770 回答
0
您需要检查真实文件类型和给定文件类型,如下所示:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png|pdf';
$this->load->library('upload', $config);
$file = $_FILES['userfile'];
// given file type
$gftype=pathinfo($file['name'], PATHINFO_EXTENSION);;
// real file type
$rftype = explode('/',mime_content_type($file['tmp_name']))[1];
if($gftype === $rftype){
if (! $this->upload->do_upload('userfile')){
echo "Error";
}else{
echo "Success";
}
}else{
echo 'This is not real extension';
}
于 2018-07-13T09:11:49.237 回答