(OpenCart)查看客户上传的图像

时间:2015-06-20 06:26:19

标签: php image upload resize opencart

我正在尝试从客户产品页面上传图像(上传文件选项),图像上传到system/upload文件夹并重命名为:filename + md5哈希字符串。因此,例如,我上传image.jpg,该文件将上传到system/upload/image.jpg.392da1267fbfa4be65f7859bb0b974d9

现在我想看到客户从管理页面上传的图片(我创建了一个新的模块页面),如何调整大小并显示图像文件?我可以从数据库中的表oc_upload获取文件名,但是phisical文件使用的是没有扩展名的修改后的名称,我无法调整此文件的大小,因为它位于system/upload文件夹中并且其扩展名已更改。图像大小调整工具只能调整image文件夹中的图像,并在“设置”页面中配置了一些允许的扩展名。

知道如何显示客户上传的图片吗?我是否需要使用其原始名称将重命名的上传文件复制到image文件夹,然后调整大小并显示它?我很感激你的任何想法。谢谢。

1 个答案:

答案 0 :(得分:0)

通过将resize()中的admin/model/tool/image.php方法复制到我的控制器并修改它以调整system/upload文件夹中的图像来获得解决方案。

    private function resizeImageUpload($old_filename, $width, $height, $new_filename = '') {

            $extension_arr = array('jpeg', 'jpg', 'png', 'gif');

            $old_image = $old_filename;

            if (!empty($new_filename)) {
                $extension = pathinfo($new_filename, PATHINFO_EXTENSION);
                $new_image = 'cache/system/upload/' . utf8_substr($new_filename, 0, utf8_strrpos($new_filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
            } else {
                $extension = pathinfo($old_filename, PATHINFO_EXTENSION);
                $new_image = 'cache/system/upload/' . utf8_substr($old_filename, 0, utf8_strrpos($old_filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
            }

            if (!in_array($extension, $extension_arr)) return '';

            if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_UPLOAD . $old_image) > filectime(DIR_IMAGE . $new_image))) {
                $path = '';

                $directories = explode('/', dirname(str_replace('../', '', $new_image)));

                foreach ($directories as $directory) {
                        $path = $path . '/' . $directory;

                        if (!is_dir(DIR_IMAGE . $path)) {
                                @mkdir(DIR_IMAGE . $path, 0777);
                        }
                }

                list($width_orig, $height_orig) = getimagesize(DIR_UPLOAD . $old_image);

                if ($width_orig != $width || $height_orig != $height) {
                        $image = new Image(DIR_UPLOAD . $old_image);
                        $image->resize($width, $height);
                        $image->save(DIR_IMAGE . $new_image);
                } else {
                        $success = copy(DIR_UPLOAD . $old_image, DIR_IMAGE . $new_image);
                }
            }

        if ($this->request->server['HTTPS']) {
            return HTTPS_CATALOG . 'image/' . $new_image;
        } else {
            return HTTP_CATALOG . 'image/' . $new_image;
        }
    }