用手机相机拍摄的照片上传后会导致$ _FILES错误

时间:2019-07-17 11:40:31

标签: php file-upload jpeg mime-types

当我尝试上传在手机(摩托罗拉Moto G 5S)上拍摄的jpg时,文件并没有使用适用于所有其他JPS的PHP脚本存储在服务器上。

$ _ FILES显示'错误'= 1:'类型','大小'和'tmp_name'保持为空。

显然,我的手机摄像头JPG有所不同。如何避免此错误,或者仍然使用PHP将图像保存在服务器上?

问题发生在我的本地服务器(WAMP)和远程服务器(Nginx / PHP 7.2)上的完全相同上。 在这两种情况下,我不能上传手机拍摄的照片,但是可以上传其他照片。

例如,当我在Photoshop,然后再次保存,问题消失了。

这是适用于我的代码的摘要,适用于所有JPG,但用手机拍摄的照片除外:

<?php
  if ( !empty($_FILES) ) {
    $file = $_FILES;
    var_dump ($file);
    //works for all jpg's except for phone camera jpg's :
    $tempFile = $file['file']['tmp_name'];
    $targetFile = 'somedir/foobar.jpg';
    if ( !move_uploaded_file($tempFile,$targetFile) ) {
      echo 'Unknown server error ';
      exit();
    }
  }
?>

这是电话图片$ _FILES ['file']的内容:

array (size=5)
  'name' => string 'IMG_20190717_101813958.jpg' (length=26)
  'type' => string '' (length=0)
  'tmp_name' => string '' (length=0)
  'error' => int 1
  'size' => int 0

对于在Photoshop中保存后的同一张手机图像(现在可以使用):

array (size=5)
  'name' => string 'IMG_20190717_afterPhotoshop.jpg' (length=31)
  'type' => string 'image/jpeg' (length=10)
  'tmp_name' => string 'C:\wamp64\tmp\php9884.tmp' (length=25)
  'error' => int 0
  'size' => int 2095408

检查图像属性的详细信息时,手机图像看起来非常正常,具有EXIF数据,并且显示“项目类型:JPEG图像”。

文件大小不是问题。编辑:我有点傻,但似乎是确切的问题..

0 个答案:

没有答案