这是文件上传代码。它以这样的方式工作,它接受所有图像扩展。但它需要验证文件类型(视频,word doc等)。我需要它才能上传图片。举个例子,现在发生的事情是,当我选择一个word文档并提交我的表单时,它会显示一堆错误,插入记录而不是文件。应该发生的是,如果文件不是图像,则不应让用户插入记录。应该收到一条错误消息,提示在提交表单时检查文件类型。请帮助我实现这一目标。
if( isset($_FILES['img']) )
{
//resizing the image
$image = new SimpleImage();
$image->load($_FILES['img']['tmp_name']);
$image->resizeToHeight(180);
$info = pathinfo($_FILES['img']['name']);
$file = 'uploads/' . basename($_FILES['img']['name'],'.'.$info['extension']) . '.png';
if ($image->save($file))
{
if($fp = fopen($file , 'rb'))
{
$data = fread($fp, filesize($file));
//encoding the the image only to text so can be stored in DB
$data = base64_encode($data);
fclose($fp);
}
}
else
{
$error = '<p id="failed">Invalid Image</p>';
}
答案 0 :(得分:0)
在较旧的PHP版本中,您可以使用mime_content_type
。但是如果你有PHP&gt; 5.3你应该使用finfo_*
函数
您还应该检查is_uploaded_file()
而不是isset()
if( is_uploaded_file( $_FILES['img']['tmp_name'] ) ) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$type = finfo_file( $_FILES['img']['tmp_name'] );
if( $type == 'image/gif' ) { // for example
// do stuff
}
}
答案 1 :(得分:0)
您需要检查图像上的MIME类型,如下所示:
if (isset($_FILES['img'])) {
$file = $_FILES['img'];
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $file['tmp_name']);
finfo_close($finfo);
if (strpos($mime, 'image') === false) {
die('The submitted file is not an image!');
}
// Uploading code..
}
如果mime字符串中包含'image',那么它就是图像。希望这会有所帮助。