Codeigniter - несколько загрузок и информация о файле
Привет всем! Я использую загрузчик jQuery с именем uploadify, который загружает несколько файлов на сервер, используя javascript, имея флэш-мультипикер для вашего жесткого диска. Это позволяет легко захватывать сразу несколько файлов, а не по одному. У меня проблема. Он будет вызывать один и тот же сценарий, используя ajax для загрузки файлов по отдельности, даже если вы выбрали несколько элементов. Это позволило бы мне написать функцию php в контроллере, который я назвал upload для загрузки этого файла.
Я хотел бы иметь возможность разрешить пользователю загружать все свои файлы во время процесса регистрации. Проблема в том, что я новичок в codeigniter и хочу использовать класс загрузки файлов, но, насколько я знаю, вы не можете выяснить, какой это тип файла, прежде чем делать загрузку. Только после этого вы можете узнать, является ли это изображение или нет. Причина в том, что я помещаю их все в отдельные папки. Один для видео, один для музыки и один для изображений.
Я подумал, что можно обойти это путем создания отдельного поля загрузки для каждого типа загрузки и просто вызвать другой ajax-скрипт. Это на самом деле то, что я бы предпочел сделать, но есть еще одна проблема. Я знаю, что codeigniter использует загрузку name= 'userfile', и мне нужно три поля загрузчика на моей странице с разными именами на них. Можете ли вы иметь несколько полей для загрузки на страницу с воспламенителем кода.
Если бы кто-то мог помочь мне с этим, я был бы очень признателен.
1 ответ
Почему бы просто не использовать 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';
}
}