我使用jquery脚本动态地将新文件上传字段添加到我的表单中,因此,我的所有文件字段都是这样的
<input class="file-input-area" name="mpfile[]" type="file" size="32" value="" />
换句话说,如果我点击“添加更多文件上传”链接5次,我会得到5个文件上传字段,与上面的字段完全相同。
我对codeigniter很新,并做了一些研究,告诉我如果上传多个文件,我应该在字段名称之后使用[]我希望这是对的。
我现在的问题是确定上传文件的过程,并将其名称存储到数据库表中。
我尝试过正常的PHP上传,但它似乎无法正常工作,我不确定在我的视图,控制器和模型中放置什么。
如果有人能给我一个如何实现它的例子,那将对我有所帮助。
干杯,
答案 0 :(得分: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
我们将文件名存储在隐藏数组字段“pics”中。提交表单后,使用$this->input->post('pics')
读取这些名称并将其存储到数据库中。