Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Can';t使用exif\u read\u数据提取$\u文件的内容_Php_Arrays - Fatal编程技术网

Php Can';t使用exif\u read\u数据提取$\u文件的内容

Php Can';t使用exif\u read\u数据提取$\u文件的内容,php,arrays,Php,Arrays,我刚刚开始使用php,在过去的几天里完全被难倒了。 我试图提取并使用从$\u文件中的多个数组中提取的键值对。我相信这是一个愚蠢可笑的问题,但我被难住了。如果我运行以下代码,我会得到以下结果 $exif = exif_read_data('/uploads/'.$file['name'], 0, true); foreach($_FILES as $file){ echo $file['name'] . " :<br />\n"; foreach ($exif as

我刚刚开始使用php,在过去的几天里完全被难倒了。 我试图提取并使用从$\u文件中的多个数组中提取的键值对。我相信这是一个愚蠢可笑的问题,但我被难住了。如果我运行以下代码,我会得到以下结果

$exif = exif_read_data('/uploads/'.$file['name'],  0, true);

  foreach($_FILES as $file){
  echo $file['name']  .  " :<br />\n";
  foreach ($exif as $key => $section) {
      foreach ($section as $name => $val) {

          echo "<pre>This is \$name" . $name ."<br>";
          echo "<pre>This is \$val" . $val ."<br>";
          }
        }
     } 
为了简洁起见,我省略了第二张照片中的数据

以下是$\u文件的输出:

我查看了我能找到的每个网站和每本书,以了解如何访问名称-值对(例如IFD0.ImageWidth:1024和IFD0.ImageLength:768),从而可以设置upnload大小限制等


我现在非常困惑,希望得到任何帮助或指导。我们特别感谢这些资源。多谢各位

这个代码片段已经完成了这项工作,因此对于第一个文件,您应该能够执行以下操作


既然如此,您应该而不是信任exif数据来进行约束验证!Exif数据是元数据。它们很容易被欺骗/注射,或者根本不存在。而是对实际图像数据进行分析,首先检查文件大小本身,然后使用getimagesize()作为示例。请参见

好的,该代码段已经完成了这项工作,因此对于第一个文件,您应该能够执行以下操作


既然如此,您应该而不是信任exif数据来进行约束验证!Exif数据是元数据。它们很容易被欺骗/注射,或者根本不存在。而是对实际图像数据进行分析,首先检查文件大小本身,然后使用getimagesize()作为示例。请参见

谢谢您的帮助,尽管看到了上面的数据,我还是得到了以下错误:注意:未定义索引:图像高度在。。。在第56行上载imgtest.php。我将调查getimagesize。谢谢哦,是的,第56行是$height=$exif['IDFO']['ImageHeight'];啊,很抱歉,我认为我的代码很混乱,只有在未执行块的情况下才能对$width和$height进行提取(我推断回退将处理您需要执行的操作并返回)。我已经修改了代码片段,以显式显示else块。哦,除此之外,我认为字段名是“ImageLength”,而不是“ImageHeight”(抱歉!)(也为此编辑了代码片段)。谢谢您的帮助。现在我发现我的问题是,我试图从$\u文件中的数组中提取信息,而不是从$exi中提取信息,如果我知道这会是一件愚蠢的事情的话。再次感谢。感谢您的帮助,但是,尽管看到了上面的数据,我还是得到了这个错误:注意:未定义索引:ImageHeight in。。。在第56行上载imgtest.php。我将调查getimagesize。谢谢哦,是的,第56行是$height=$exif['IDFO']['ImageHeight'];啊,很抱歉,我认为我的代码很混乱,只有在未执行块的情况下才能对$width和$height进行提取(我推断回退将处理您需要执行的操作并返回)。我已经修改了代码片段,以显式显示else块。哦,除此之外,我认为字段名是“ImageLength”,而不是“ImageHeight”(抱歉!)(也为此编辑了代码片段)。谢谢您的帮助。现在我发现我的问题是,我试图从$\u文件中的数组中提取信息,而不是从$exi中提取信息,如果我知道这会是一件愚蠢的事情的话。再次感谢。
Image contains headers  
Across the Field - LK.jpg :
FILE.FileName: Across the Field - LK.jpg
FILE.FileDateTime: 1361055472  
FILE.FileSize: 294785  
FILE.FileType: 2  
FILE.MimeType: image/jpeg  
FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF  
COMPUTED.html: width="700" height="525"  
COMPUTED.Height: 525  
COMPUTED.Width: 700  
COMPUTED.IsColor: 1  
COMPUTED.ByteOrderMotorola: 0  
COMPUTED.ApertureFNumber: f/9.0  
COMPUTED.Copyright: Copyright 2010   
IFD0.ImageWidth: 1024  
IFD0.ImageLength: 768  
IFD0.BitsPerSample: Array  
IFD0.PhotometricInterpretation: 2  
IFD0.Model: NIKON D300  
IFD0.Orientation: 1  
IFD0.SamplesPerPixel: 3  
IFD0.XResolution: 720000/10000 
IFD0.YResolution: 720000/10000    
IFD0.ResolutionUnit: 2  
IFD0.Software: Adobe Photoshop CS5 Windows  
IFD0.DateTime: 2013:01:24 16:33:16  
IFD0.Artist: lken  
IFD0.Copyright: Copyright 2010   
IFD0.Exif_IFD_Pointer: 316  
THUMBNAIL.Compression: 6
THUMBNAIL.XResolution: 72/1  
THUMBNAIL.YResolution: 72/1 
THUMBNAIL.ResolutionUnit: 2  
THUMBNAIL.JPEGInterchangeFormat: 642  
THUMBNAIL.JPEGInterchangeFormatLength: 0  
EXIF.ExposureTime: 1/100  
EXIF.FNumber: 9/1  
EXIF.ISOSpeedRatings: 400  
EXIF.ExifVersion: 0221  
EXIF.DateTimeOriginal: 2010:08:15 05:57:17  
EXIF.DateTimeDigitized: 2010:08:15 05:57:17 
EXIF.ShutterSpeedValue: 6643856/1000000   
EXIF.ApertureValue: 633985/100000  
EXIF.FocalLength: 1700/100  
EXIF.ColorSpace: 65535  
EXIF.ExifImageWidth: 700   
EXIF.ExifImageLength: 525  
Array
(
    [userfile] => Array
        (
            [name] => Across the Field - LK.jpg
            [type] => image/jpeg
            [tmp_name] => C:\wamp\tmp\php223.tmp
            [error] => 0
            [size] => 294785
        )

    [userfile1] => Array
        (
            [name] => autumn-panorama - lk.jpg
            [type] => image/jpeg
            [tmp_name] => C:\wamp\tmp\php224.tmp
            [error] => 0
            [size] => 106349
        )
)
$exif = exif_read_data($_FILES['userfile']['tmp_name'],  0, true);

if (isset($exif['IFD0']['ImageWidth']) && isset($exif['IFD0']['ImageLength']))
{
    // good to go!
    $width = $exif['IFD0']['ImageWidth'];
    $height = $exif['IFD0']['ImageLength'];
}
else
{
    // size data not present, fallback onto something else
    return;
}