2010-09-06 2 views
2

Я создаю приложение, которое должно загружать загруженные файлы и помещать их в отдельные каталоги для эскизов и полноразмерных изображений. Но $ config ['upload_path'] = './uploads/'; только позволяет мне выбрать один путь загрузки. Как определить два или более пути загрузки?Несколько путей загрузки файлов Codeigniter

ответ

11

На самом деле все, что вам нужно сделать, это «повторно инициализировать» класс загрузки. Codeigniter не позволяет вызывать класс дважды с новыми параметрами (он игнорирует второй запрос), однако вы можете сказать, что класс вручную загружает новые параметры. Вот основные:. (Обратите внимание на строку "$ this-> upload-> инициализирована ($ конфигурации)" Это ключ

// this is for form field 1 which is an image.... 
$config['upload_path'] = './uploads/path1'; 
$config['allowed_types'] = 'gif|jpg|png'; 
$config['max_size'] = '100'; 
$config['max_width'] = '1024'; 
$config['max_height'] = '768'; 
$this->upload->initialize($config); 
$this->upload->do_upload($fieild_1); 

// this is for form field 2 which is a pdf 
$config['upload_path'] = './pdfs/path2'; 
$config['allowed_types'] = 'pdf'; 
$config['max_size'] = '300'; 
$this->upload->initialize($config); 
$this->upload->do_upload($fieild_2); 

Я написал целую статью об этом здесь: http://taggedzi.com/articles/display/multiple-file-uploads-using-codeigniter

Вы можете изменить любой из разрешенных параметров во втором скрипте инициализации, чтобы ваш второй файл мог иметь совершенно другой макияж. Вы можете делать это столько раз, сколько вам нравится, вам просто нужно повторно инициализировать для каждого типа файла. (Вы может даже настроить конфигурационный массив и пропустить, если вам нравится ...)

Надеюсь, это поможет.

+0

спасибо за объяснение. – Kumar

-1

Короткий (и неутешительный) ответ: класс загрузки файлов CodeIgniter был разработан, чтобы принять 1 загруженный файл для каждой формы.

Долгий ответ somewhere around here.

0

Здесь вы сталкиваетесь с двумя проблемами. Вам необходимо дополнительно разложить проблему на дискретные задачи.

Прежде всего, вам необходимо установить соответствующий каталог загрузки. На моем сайте, каждый пользователь направляется на их собственную директорию загрузки:

/images/member/1 
/images/member/2 
/images/member/3 

Мой контроллер устанавливает каталог загрузки динамически, на основе идентификатора пользователя

$config['upload_path'] = "/images/member/$user_id"; 

Во-вторых, вам нужно обработать загруженный файл, создание измененных и уменьшенных изображений. Моя библиотека обработки изображений использует тот же самый путь, который я прошел до $ конфиги [ «upload_path»] в качестве корневого каталога, и помещает его выход в подкаталоги относительно этого динамического корня:

/images/member/1/resized 
/images/member/1/thumbnails 

Моего сайта на самом деле немного больше сложнее, чем это. Но дело в том, что установка $ config ['upload_path'] динамически позволяет вам иметь столько каналов загрузки, сколько захотите.

+0

Очень приятно, спасибо! – pigfox

Смежные вопросы