PHP图像类型应用程序/png

Posted

技术标签:

【中文标题】PHP图像类型应用程序/png【英文标题】:PHP image type application/png 【发布时间】:2017-09-28 11:27:36 【问题描述】:

由于某种原因,图像类型在 IE 7 和 Edge 中显示为“application/png”,但在 Chrome 和 Firefox 中显示为“image/png”。我尝试了几种不同的图像,jpegs 做同样的事情。这是正常的吗?我应该包含一个或声明来说明“应用程序/png”吗?还是我做错了什么?

      if ((($screenshot_type == 'image/gif') || ($screenshot_type == 'image/jpeg') || 
      ($screenshot_type == 'image/pjpeg') || ($screenshot_type == 'image/png')) && 
      (($screenshot_size > 0) && ($screenshot_size <= GW_MAXFILESIZE))) 
      if ($_FILES['screenshot']['error'] == 0) 

        // Move the file to the targe upload folder
        $target = GW_UPLOADPATH . $screenshot;
        if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) 
            // Connect to the database
            $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
              or die('Unable to connect to databse');
            // Write the data to the database
            $query = "INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score', '$screenshot')";
            mysqli_query($dbc, $query)
              or die('Unable to complete query');

            // Confirm success with the user
            echo '<p>Thanks for adding your new high score!</p>';
            echo '<p><strong>Name:</strong> ' . $name . '<br>';
            echo '<strong>Score:</strong> ' . $score . '</p>';
            echo '<img src="' . GW_UPLOADPATH . $screenshot . '"  /></p>';
            echo '<p><a href="index.php">&lt;&lt; Back to high scores</a></p>';

            // Clear the score data to clear the form
            $name = "";
            $score = "";
            $screenshot = "";

            mysqli_close($dbc);
      
      else 
        echo '<p class="error">Sorry, there was a problem uploading your screen shot image.</p>';
      
    
  
  else 
    echo '<p class="error">The screen shot must be a GIF, JPEG, or PNG image file no ' .
      'greater than ' . (GW_MAXFILESIZE / 1024) . ' KB in size.<br>' . $screenshot_size . '<br>' . $screenshot_type . '</p>';
  

【问题讨论】:

你最好检查一下file extension, than for mime type。 【参考方案1】:

不同的浏览器和操作系统提供不同的 mime 类型。您或许应该只在上传的文件上使用 http://php.net/getimagesize,然后打开 $getimagesizeresult[2] 并使用 IMG_PNG、IMG_JPG、IMG_GIF 的情况,并自行应用适当的 mime 类型。

【讨论】:

以上是关于PHP图像类型应用程序/png的主要内容,如果未能解决你的问题,请参考以下文章

PHP图片上传安全检查清单

如何在 PHP 中将图像从 base 64 转换为它们的文件类型?

是否可以将 jpeg(或 png)类型的图像设置为 exe(C++)?

如何使用干预图像laravel将webp图像转换为jpeg或png

Laravel 4.2 抛出 NotReadableException “不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、GIF 或 WebP 文件。”

我可以在 Android 中创建自定义图像 MIME 类型吗?