上传没有扩展名(PHP)的iPhone图像



在我的php代码中,我正在处理一个从不同来源上传的图像:桌面,移动设备等。通常,图像是png或jpg的,但我注意到从iOS/ios/iPhone(也许也可能也是Android)没有扩展名,仅作为"图像"。我试图在上传到服务器后重新处理图片(使用Exif_ImageType和getextension()检查文件是否是图片以及它是否作为扩展名,如果根据其检测到的类型丢失,能够添加一个。但是我是由于我的脚本仅接受PNG或JPG,因此无法执行此操作。解决此问题的最有效和最简单的方法是什么?

这是我的代码:

if(!empty($_FILES['file']['name'])){
    $uploadedFile = '';
    if(!empty($_FILES["file"]["type"]))
    {
        $valid_extensions = array("jpeg", "jpg", "png");
        $temporary = explode(".", $_FILES["file"]["name"]);
        $file_extension = end($temporary);
        if((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") ||
         ($_FILES["file"]["type"] == "image/jpeg")) && in_array($file_extension, $valid_extensions))
        {
            $filetype=$_FILES["file"]["type"];
            $sourcePath = $_FILES['file']['tmp_name'];
            $targetPath = "upload/".$fileName;
            $temp = explode(".", $_FILES["file"]["name"]);      
            $newfilename = 'code' . '.' . end($temp);           
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);
        }
    }

iOS设备上的某些图像是heic [https://en.wikipedia.org/wiki/high_effipication_image_file_format],这些是生活图像。

因此,您正在上传某些内容,当您检查扩展程序并要求是要求是脚本跳过并结束时,如果您放置了其他语句,则可以让用户并知道他们提交的文件不兼容。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</p>

if((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") ||
         ($_FILES["file"]["type"] == "image/jpeg")) && in_array($file_extension, $valid_extensions))
        {
            $filetype=$_FILES["file"]["type"];
            $sourcePath = $_FILES['file']['tmp_name'];
            $targetPath = "upload/".$fileName;
            $temp = explode(".", $_FILES["file"]["name"]);      
            $newfilename = 'code' . '.' . end($temp);           
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);
        }else{
            print "Invalid File Format :" . $_FILES["file"]["type"];
        }

最新更新