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

时间:2019-02-21 18:29:49

标签: php ajax

在我的php代码中,我正在处理从其他来源上传的图像:台式机,移动设备等。通常,图像以PNG或JPG格式出现,但我注意到从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);

        }
    }

1 个答案:

答案 0 :(得分:-1)

IOS设备上的某些图像很忙[https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format],它们是生命图像。

因此,您正在上载某些内容,当您检查扩展名和mime类型时,脚本会跳过并转到末尾,如果您输入else语句,则可以让用户知道他们提交的文件不兼容。 / 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"];

        }