我正在http://harrisonprograms.com创建自己的网站,我在个人资料页面上遇到了问题。
问题是我创建了一个PHP脚本,将图像上传到服务器,例如图像目录可能是Users / whatevertheusername / imagename.png,然后在用户MySQL行的MySQL中添加一个字符串引用。但是在脚本执行此操作之前,它会检查上传的文件是否是使用子字符串函数的图像文件,我无法发布图像,因为我的声誉不够高,所以这里是文本中的代码
if(isset($_POST['SUBMITFILE2'])){
$imageName = $_FILES['UPLFILE2']['name'];
$imageData = file_get_contents($_FILES['UPLFILE2']['tmp_name']);
$imageType = $_FILES['UPLFILE2']['type'];
//VALIDATE WHETHER FILE IS AN IMAGE OR NOT
if(substr("$imageName", 0, 5) == 'image'){
我无法理解的是它曾经工作并验证文件是否是图像,但现在它已经停止工作,我不知道为什么。
答案 0 :(得分:2)
因此,按名称或扩展名检查文件类型并不好,因为您可以通过普通剩余功能轻松更改它。你可以使用例如,检查上传的文件是否是图像。哑剧型。在php中你有函数mime_content_type()
。用法示例:
$imageMimeTypes = array(
'image/png',
'image/gif',
'image/jpeg');
$fileMimeType = mime_content_type($_FILES['UPLFILE2']['tmp_name']);
if (in_array($fileMimeType, $imageMimeTypes)) {
//passed validation
}
当然,您可以定义更多mime类型的图像。
答案 1 :(得分:0)
您可以使用exif_imagetype来确定图像的类型
答案 2 :(得分:0)
很确定你可以在这里找到答案:php check file extension in upload form
$allowed = array('gif','png' ,'jpg'); //extension allowed
$filename = $_FILES['video_file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
echo 'error';
}else{
//your extra code...
}