2010-12-02 63 views
1

即时通讯使用jQuery脚本到新的文件上传域动态添加到我的形式,因此,我的所有文件中的字段看起来像这样笨 - 多文件上传使用动态磁场发生

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

所以,换句话说,如果我点击“添加更多文件上传”链接5次,我会得到5个文件上传字段,看起来完全一样。

Iam对codeigniter来说很新,并且已经做了一些研究,告诉我如果上传多个文件,我应该在字段名称后面使用[] ...我希望这是正确的。

我现在的问题是确定上传文件的过程,并将它们的名称存储到数据库表中。

我已经尝试了正常的PHP上传,但它似乎并没有工作,即时通讯不知道如何把我的看法,控制器和模型。

如果有人能给我一个他们如何去做的例子,它会帮助我很多。

干杯,

回答

0

使用jQuery uploadify。这些文件是异步上传的,请参阅一些演示here

下面是一个实现:

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')读取这些名称并将它们存储到数据库中。

+0

是否应该从包含代码其余部分的JavaScript文件中添加隐藏表单域? – serengeti12 2011-07-02 10:18:27