是否可以使用CodeIgniter上传库使用$ _FILE var进行上传?
$this->upload->do_upload('field_name')
它需要html字段名称作为参数。但我需要使用de $ _FILES进行上传。
问题是: 我必须能够在提交之前向表单添加更多照片。我使用(+)按钮克隆字段。像这样:
HTML:
...
<span onclick='duplicarCampos()'> + </span>
<div class="form-group">
<div id="destino" class="col-lg-12">
<div id="fabricas" class="col-lg-4 fabricas">
<label>Imagem:</label>
<input name="img[]" type="file" class="form-control">
<label>Link:</label>
<input name="link[]" type="text" class="form-control">
</div>
</div>
</div>
...
我用AJAX提交表单,如下:
JS TO SUBMIT:
...
var imagens = $("input[name='img[]']").map(function () {
return $(this).prop("files")[0];
}).get();
var links = $("input[name='link[]']").map(function () {
return $(this).val();
}).get();
var form_data = new FormData();
for(i=0; i<imagens.length; i++){
form_data.append("imagens_"+i,imagens[i]);
form_data.append("links_"+i,links[i]);
}
form_data.append("lastIndice",(i-1));
$.ajax({
...
});
...
在我的 PHP控制器中,我收到它们:
...
for($i=0; $i < $lastIndice+1; $i++){
$links[$i] = $_POST["links_".$i];
}
for($j=0; $j < $lastIndice+1; $j++){
$imagens[$j] = $_FILES["imagens_".$j];
}
...
现在,我想使用CodeIgniter 的上传库上传每张图片。但我知道它的唯一方法是使用 html字段名称,而不是 $ _ FILES 作为do_upload()的参数......
使用UPLOAD LIBRARY:
...
if(!$ci->upload->do_upload($this->nome_campo)) {
...
}
...
我可以上传&#34;通常&#34;使用PHP,但我是CodeIgniter的新手,我想学习如何使用它。
答案 0 :(得分:2)
从当前迭代的外观来看:
for($j=0; $j < $lastIndice+1; $j++){
$imagens[$j] = $_FILES["imagens_".$j];
}
看起来你的$_FILES
数组是以这种方式构建的(例子):
(
[imagens_0] => Array
(
[name] => foo.txt
[type] => text/plain
[tmp_name] => /tmp/phpYzdqkD
[error] => 0
[size] => 123
)
[imagens_1] => Array
(
[name] => bar.txt
[type] => text/plain
[tmp_name] => /tmp/phpeEwEWG
[error] => 0
[size] => 456
)
)
Codeigniter的do_upload()
期望保存文件信息的$ _FILES数组的键值。因此,通过以这种方式更改for
循环,您应该能够上传它:
for($j=0; $j < $lastIndice+1; $j++){
$this->upload->do_upload("imagens_".$j);
}