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

(OpenCart) View Images Uploaded by Customer

我正在尝试从客户产品页面上传图片(上传文件选项),图片已上传到 system/upload 文件夹并重命名为:文件名 + md5 哈希字符串。所以,比如我上传image.jpg,文件会被上传到system/upload/image.jpg.392da1267fbfa4be65f7859bb0b974d9.

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

知道如何显示客户上传的图片吗?是否需要将重命名后的上传文件按原名复制到image文件夹,然后调整大小显示?我很欣赏你的任何想法。谢谢。

刚刚通过将 admin/model/tool/image.php 中的 resize() 方法复制到我的控制器并修改它以调整 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;
        }
    }