CodeIgniter - Несколько загрузок файлов с использованием динамического создания поля - PullRequest
1 голос
/ 02 декабря 2010

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

<input class="file-input-area" name="mpfile[]" type="file" size="32" value="" />

Другими словами, если 5 раз щелкнуть ссылку «Добавить дополнительную загрузку файла», я получу 5 полей для загрузки файла, которые выглядят точно так же, как указано выше.

Я совсем новичок в codeigniter и провел некоторое исследование, которое говорит мне, что если я загружаю несколько файлов, я должен использовать [] после имени поля ... надеюсь, это правильно.

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

Я пробовал обычную загрузку PHP, но, похоже, она не работает, я не уверен, что указать в моем представлении, контроллере и модели.

Если кто-то может дать мне пример того, как они поступят, это очень мне поможет.

Приветствия

1 Ответ

0 голосов
/ 26 января 2011

Используйте jQuery uploadify .Файлы загружаются асинхронно, см. Некоторые демонстрации здесь .

Вот реализация:

jQuery('#images').uploadify({
    'uploader'  : '/uploadify/uploadify.swf',
    'script'    : '/uploadify/uploadify.php',
    'cancelImg' : '/uploadify/cancel.png',
    'folder'    : '/data/images',
    'auto'      : true,
    'fileExt'   : '*.jpg;*.gif;*.png;*.jpeg;*.tif',
    'fileDesc'  : 'Web Image Files (.JPG, .GIF, .PNG, .JPEG, .TIF)',
    'queueID'   : 'images-queue',
    'onCancel'  : function(event,ID,fileObj,data) {
     jQuery.ajax({
            type: "POST",
            url: "uploadify/delete_image.php",
            data: "filepath=/data/images/" + jQuery("#"+ID).val(),
            success: function(){
                jQuery("#"+ID).remove();
                queueSize = data.fileCount;
                jQuery('#status-message').text('Photo uploaded!');
            }
        });
   },
   'onSelect'  :function (event, ID) {
        if (queueSize < maxQueueSize)
                queueSize++;
            else{
                alert("Max number of files is " + maxQueueSize);
                jQuery('#images').uploadifyCancel(ID);
                return false;
            }       
    },
    'onSelectOnce'   : function(event,data) {
    jQuery('#status-message').text('File is currently uploaded...');
   },
   'onComplete': function (evt, queueID, fileObj, response, data) {
    jQuery('#status-message').text('H φωτογραφία φορτώθηκε!');
        jQuery("#field_photos").append("<input id="+ queueID +" type='hidden' name='pics[]' value='" + response + "' />"); //adds hidden form field
    },
    'onAllComplete'  : function(event,data) {
   },
   'onClearQueue' : function (a, b) {
        queueSize = 0;
    },
    'multi'     : true,
    'simUploadLimit' : 3,
    'removeCompleted': false,
    'sizeLimit' : 1048576,
    'queueSizeLimit' : 1
 });

С этой строкой:

jQuery("#field_photos").append("<input id="+ queueID +" type='hidden' name='pics[]' value='" + response + "' />"); //adds hidden form field

мыхранить имена файлов в скрытом массиве поля «фото».Когда ваша форма отправлена, вы читаете эти имена, используя $this->input->post('pics'), и сохраняете их в своей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...