Codeigniter несколько путей загрузки файлов - PullRequest
3 голосов
/ 06 сентября 2010

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

Ответы [ 3 ]

11 голосов
/ 26 февраля 2011

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

// 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 голосов
/ 12 сентября 2010

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

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

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

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

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

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

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

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

0 голосов
/ 06 сентября 2010

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

Длинный ответ где-то здесь .

...