【问题标题】:How to prevent change uploaded image type JPG to JPEG如何防止将上传的图像类型 JPG 更改为 JPEG
【发布时间】:2018-06-02 17:46:24
【问题描述】:

此脚本自动将上传的图片类型JPG更改为JPEG

如何预防?我不想更改图像类型。

if (is_uploaded_file($_FILES['myfile']['tmp_name']) && ($_FILES["myfile"]["size"] <= 8192 * 1 * 8192)) {
   $enabled = array(
       IMAGETYPE_PNG,
       IMAGETYPE_JPEG
   );
   list($width, $height, $extension) = getimagesize($_FILES['myfile']['tmp_name']);
   if (in_array($extension, $enabled)) {
       $ext     = image_type_to_extension($extension, true);
       $newname = $username . $id . '-' . time() . $ext;
       $imglink = $upload_folder . '/' . $newname;
       if (@move_uploaded_file($_FILES['myfile']['tmp_name'], "$upload_folder/" . $newname))

       $result     = 1;

【问题讨论】:

  • 您如何看到图像类型发生了变化?
  • 如果你回显 $ext 会发生什么?还有 echo $extension。
  • 如果我上传 JPG 类型的图像,我收到 JPEG 类型的结果: $username 。 $id 。 '-' 。时间() 。 JPEG
  • 对不起,我不明白如何“回显 $ext?也回显 $extension。”?
  • 变量 $ext 和 $extension 的值是多少。通常可以使用以下方法之一找到:echo、var_dump、print_r 或 var_export。

标签: php image types


【解决方案1】:

从文件数据中提取原始扩展名不是image_type_to_extension

替换这一行

$ext     = image_type_to_extension($extension, true);

有了这个

$ext = "." . strtolower(pathinfo($_FILES['myfile']["name"],PATHINFO_EXTENSION));

编辑:要允许JPG 扩展,您必须在确认图像是带有getimagesize() 的真实图像文件后自行检查。

$allowedExtensions = ['jpg','png','jpeg'];
if(in_array($ext, $allowedExtensions)){
    //it's an allowed extension 
}

【讨论】:

  • 我的问题解决了。谢谢你。我如何接收 JPG 类型的图像。
  • $enabled 数组中添加您想要允许的扩展。
猜你喜欢
  • 1970-01-01
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-21
  • 2011-03-21
  • 2011-01-07
相关资源
最近更新 更多