Codeigniter - несколько загрузок и информация о файле - PullRequest
0 голосов
/ 08 сентября 2011

Привет всем! Я использую загрузчик jQuery с именем uploadify, который загружает несколько файлов на сервер, используя javascript, имея флэш-мультипикер для жесткого диска.Это позволяет легко получать сразу несколько файлов, а не по одному.У меня проблема.Он будет вызывать один и тот же скрипт, используя ajax для загрузки файлов по отдельности, даже если вы выбрали несколько элементов.Это позволило бы мне написать функцию php в контроллере, который я назвал upload для загрузки этого файла.

Я хотел бы иметь возможность разрешить пользователю загружать все свои файлы во время процесса регистрации.Проблема в том, что я новичок в codeigniter и хочу использовать класс загрузки файлов, но, насколько я знаю, вы не можете выяснить, какой это тип файла, прежде чем делать загрузку.Только после этого вы можете узнать, является ли это изображение или нет.Причина в том, что я помещаю их все в отдельные папки.Один для видео, другой для музыки и один для изображений.

Я подумал, что можно обойти это путем создания отдельного поля загрузки для каждого типа загрузки и просто вызова отдельного сценария ajax.Это на самом деле то, что я бы предпочел сделать, но есть другая проблема.Я знаю, что codeigniter использует загрузку name = 'userfile', и мне нужно три поля загрузчика на моей странице с разными именами на них.Можете ли вы иметь несколько полей для загрузки на страницу с воспламенителем кода.

Если бы кто-то мог помочь мне с этим, я был бы очень признателен.

1 Ответ

0 голосов
/ 09 сентября 2011

Почему бы просто не использовать mime-типы, чтобы определить, что это за файл? Uploadify имеет проблему, когда не указывает, какой это тип файла, поскольку он использует загрузку на основе Flash.

Я бы порекомендовал: после загрузки файла проверить тип mime и изменить каталог в зависимости от того, какой он есть.

Если это просто изображение или видео, то это легко сделать, так как существует всего несколько различных типов.

function new_mime_content_type($filename) {

    $mime_types = array(

            'txt' => 'text/plain',
            'htm' => 'text/html',
            'html' => 'text/html',
            'php' => 'text/html',
            'css' => 'text/css',
            'js' => 'application/javascript',
            'json' => 'application/json',
            'xml' => 'application/xml',
            'swf' => 'application/x-shockwave-flash',
            'flv' => 'video/x-flv',

            // images
            'png' => 'image/png',
            'jpe' => 'image/jpeg',
            'jpeg' => 'image/jpeg',
            'jpg' => 'image/jpeg',
            'gif' => 'image/gif',
            'bmp' => 'image/bmp',
            'ico' => 'image/vnd.microsoft.icon',
            'tiff' => 'image/tiff',
            'tif' => 'image/tiff',
            'svg' => 'image/svg+xml',
            'svgz' => 'image/svg+xml',

            // archives
            'zip' => 'application/zip',
            'rar' => 'application/x-rar-compressed',
            'exe' => 'application/x-msdownload',
            'msi' => 'application/x-msdownload',
            'cab' => 'application/vnd.ms-cab-compressed',

            // audio/video
            'mp3' => 'audio/mpeg',
            'qt' => 'video/quicktime',
            'mov' => 'video/quicktime',

            // adobe
            'pdf' => 'application/pdf',
            'psd' => 'image/vnd.adobe.photoshop',
            'ai' => 'application/postscript',
            'eps' => 'application/postscript',
            'ps' => 'application/postscript',

            // ms office
            'doc' => 'application/msword',
            'rtf' => 'application/rtf',
            'xls' => 'application/vnd.ms-excel',
            'ppt' => 'application/vnd.ms-powerpoint',

            // open office
            'odt' => 'application/vnd.oasis.opendocument.text',
            'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
    );

    $ext = strtolower(array_pop(explode('.',$filename)));
    if (array_key_exists($ext, $mime_types)) {
        return $mime_types[$ext];
    }
    else {
        return 'general/general';
    }
}
...