当前位置: 首页 > 知识库问答 >
问题:

更改上传图像的文件扩展名

翟博雅
2023-03-14

我正在创建一个Zend Framework应用程序,用户可以在其中上载配置文件图像。可接受的文件类型为png、jpg和gif。图像最终被存储为用户id和文件扩展名。

我想知道的是,假设用户上传png或gif文件,将文件扩展名更改为jpg是否安全?

这样,所有的配置文件图像都将具有相同的文件扩展名,我只是不确定这样更改文件类型是否是一个好主意。

共有1个答案

萧胜
2023-03-14

即使我从未尝试过这样做,所以我不能说它是否真的有效,我认为更改文件扩展名不是一个好主意,因为如果web服务器使用文件扩展名来确定响应的内容类型,浏览器将无法显示图像
在我看来,您应该在上传后将gif/png图像转换为jpeg格式,然后最终移动、重命名或删除原始图像,只将转换后的jpg图像保留在上传文件夹中
例如,如果启用了GD扩展,则可以执行如下操作:

<?php

/**
 * Convert gif or png image to jpg format
 *  
 * @param string  original image file name
 * @param int     output image quality (0..100) 
 * @return string output jpg file name
 */
function img2jpeg($filename, $quality = 100) {
    if (file_exists($filename) && is_readable($filename)) {
        $p = pathinfo($filename);
        $ext = strtolower($p['extension']);
        if ($ext == "jpg") {
            return($filename);
        } else if ($img = imagecreatefromstring(file_get_contents($filename))) {
            $newname = $p['dirname'].'/'.$p['filename'].'.jpg';
            if (imagejpeg($img, $newname, $quality)) {
                imagedestroy($img);
                return($newname);
            } else {
                imagedestroy($img);
                die("Error creating ".$newname."\n");
            }
        }
    }
    die("Error loading ".$filename."\n");
}

?>
 类似资料:
  • 问题内容: 我想更改特定文件夹中文件的扩展名。我在论坛上阅读了有关此主题的信息。使用“确实”的想法,我编写了以下代码,我希望它可以工作,但不能。我很感谢您为我的失误提供任何指导。 问题答案: 在对源文件是不必要的,因为只需要在源和目标路径来完成这项工作。而且,始终返回,因此调用其返回值没有任何意义。 我简单地删除了两个。检查是否适合您。

  • 问题内容: 假设从CGI开始,我已经将文件显示为文件。我想将的文件扩展名更改为显示文件。我该怎么做? 问题答案: , 例如:

  • 问题内容: 我正在将图像上传到servlet。通过检查文件头中的幻数,仅在服务器端验证上传的文件是否为图像。在将表单提交给Servlet之前,有什么方法可以在客户端验证扩展?我一按回车就开始上传。 我在客户端使用Javascript和jQuery。 更新: 我最终通过服务器端验证结束了工作,该验证读取字节,如果不是图像,则拒绝上传。 问题答案: 可以仅检查文件扩展名,但是用户可以轻松地将virus

  • 问题内容: 我想通过目录递归迭代和修改某一分机的所有文件的扩展名,说来。bash命令执行此操作是什么? 问题答案: 如果您有可用的重命名,请使用: 如果重命名不可用,请使用:

  • 我有一个像下面的邮递员的形象。我如何在改型2中做同样的事情? 我这样声明接口:

  • 我最近两天遇到了一个问题,我们如何上传一个。谷歌play上的apk文件大小超过50Mb,我想办法上传一个。带有链接中的apk扩展文件的apkhttp://developer.android.com/guide/market/expansion-files.html现在我终于成功了,但是现在我遇到了一个问题,我怎么才能像在我的对象中一样从主扩展文件中读取文件。obb格式 但现在可以使用。主扩展文件中