gpt4 book ai didi

javascript - 使用 $_FILES 而不是字段名称的 codeigniter upload->do_upload()

转载 作者:行者123 更新时间:2023-11-30 14:47:29 24 4
gpt4 key购买 nike

是否可以使用 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:

...

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 Controller 中,我这样接收它们:

...    

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() 的参数...

使用上传库:

...

if(!$ci->upload->do_upload($this->nome_campo)) {
...
}

...

我可以使用 PHP“正常”上传,但我是 CodeIgniter 的新手,我想学习如何使用它做事。

最佳答案

从您当前迭代的外观来看:

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);
}

关于javascript - 使用 $_FILES 而不是字段名称的 codeigniter upload->do_upload(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com