首页 > 解决方案 > Jquery - 文件上传插件

问题描述

我想将 tiff 文件上传到我的网络服务器。我已修改插件以接受这些文件。问题是缩略图没有创建。

我不确定这个插件是否可以制作 tiff 文件的缩略图。我已阅读官方指南,但没有看到允许的文件。

https://github.com/blueimp/jQuery-File-Upload/wiki

我修改了插件的文件,UploadHandler.php 是应用不同操作的文件,例如创建缩略图。

在这个文件中有不同的条件,tiff 文件没有出现,例如在 fix_file_extension 中:

protected function fix_file_extension($file_path, $name, $size, $type, $error,
            $index, $content_range) {
        // Add missing file extension for known image types:
        if (strpos($name, '.') === false &&
                preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
            $name .= '.'.$matches[1];
        }
        if ($this->options['correct_image_extensions'] &&
                function_exists('exif_imagetype')) {
            switch (@exif_imagetype($file_path)){
                case IMAGETYPE_JPEG:
                    $extensions = array('jpg', 'jpeg');
                    break;
                case IMAGETYPE_PNG:
                    $extensions = array('png');
                    break;
                case IMAGETYPE_GIF:
                    $extensions = array('gif');
                    break;
            }
            // Adjust incorrect image file extensions:
            if (!empty($extensions)) {
                $parts = explode('.', $name);
                $extIndex = count($parts) - 1;
                $ext = strtolower(@$parts[$extIndex]);
                if (!in_array($ext, $extensions)) {
                    $parts[$extIndex] = $extensions[0];
                    $name = implode('.', $parts);
                }
            }
        }
        return $name;
    }

或在创建缩略图:

protected function gd_create_scaled_image($file_name, $version, $options) {
        if (!function_exists('imagecreatetruecolor')) {
            error_log('Function not found: imagecreatetruecolor');
            return false;
        }
        list($file_path, $new_file_path) =
            $this->get_scaled_image_file_paths($file_name, $version);
        $type = strtolower(substr(strrchr($file_name, '.'), 1));
        switch ($type) {
            case 'jpg':
            case 'jpeg':
                $src_func = 'imagecreatefromjpeg';
                $write_func = 'imagejpeg';
                $image_quality = isset($options['jpeg_quality']) ?
                    $options['jpeg_quality'] : 75;
                break;
            case 'gif':
                $src_func = 'imagecreatefromgif';
                $write_func = 'imagegif';
                $image_quality = null;
                break;
            case 'png':
                $src_func = 'imagecreatefrompng';
                $write_func = 'imagepng';
                $image_quality = isset($options['png_quality']) ?
                    $options['png_quality'] : 9;
                break;
            default:
                return false;
        }

所以现在我不知道如何处理它,我不确定它是否能够在低 tiff 文件中创建图像?

如果不是,我应该使用第三方库 ImageMagic 创建 tiff jpeg 吗?正是在您应该创建该 jpg 的代码中?

更新:

我已经安装了 imagemagick 库,Debian 步骤:

apt-get update
apt-get install php-imagick

然后插件不显示错误消息,但浏览器不显示 tiff 文件。

我的想法是上传 tiff 文件并创建 jpg 文件作为这些 tiff 文件的缩略图,并使用这些 jpg 在浏览器中显示。问题是我不知道使用这个插件在 jpg 文件中创建所有 tiff 文件的缩略图:(

谢谢!

标签: javascriptjqueryfile-upload

解决方案


推荐阅读