我上传多个文件,问题是我无法合并文件结果。
让我们从表格开始,这是代码:
<form>
<input name="datas[{{$index}}][name]" type="text">
<input name="datas[{{$index}}][pics]" type="file">
</form>
这将输出,就像这样。
<form>
<input name="datas[0][name]" type="text">
<input name="datas[0][pics]" type="file">
<input name="datas[1][name]" type="text">
<input name="datas[1][pics]" type="file">
<input name="datas[2][name]" type="text">
<input name="datas[2][pics]" type="file">
</form>
尽可能多的用户需要,我使用angularJS重复输入...
这将输出一个数组,用于以json格式保存数据..在数据库中。
Array
(
[0] => Array
(
[name] => Marco
)
[1] => Array
(
[name] => Polo
)
[2] => Array
(
[name] => John
)
)
现在移动我的文件我用这个...
if(isset($_FILES['datas'])){
foreach($_FILES['datas']['tmp_name'] as $key) {
$file_tmp = $key['pics'];
foreach($_FILES['datas']['name'] as $keys) {
$file_name = $keys['pics'];
move_uploaded_file($file_tmp, $f_imgs.rand().$file_name);
}
}
}
到目前为止,一切都是&#34;很好&#34;,我得到了文件,我得到了名字,但我可以保存信息就像那样,因为后者我必须检索它,它将是一个乱...
这个想法如下:
1.-如果文件名称,我需要用用户名重命名文件:
pictures_01.jpg我需要添加用户名,以便文件的名称为
name_pictures_01.jpg而不是33424_pictures_01.jpg,现在我使用rand()而不是time(),因为用户将同时上传5或10个文件,时间可能相同,因此它会覆盖文件名......
2.-一旦文件被移动并用用户名重命名,我需要在json_encode之前将该最终名称添加到数组中,因此最终数组将类似于:
Array
(
[0] => Array
(
[name] => Marco
[img] => Marco_picures_01.jpg
)
[1] => Array
(
[name] => Polo
[img] => Polo_picures_01.jpg
)
[2] => Array
(
[name] => John
[img] => John_picures_01.jpg
)
)
)
现在用[img]键按下我使用此代码的值:
foreach ($arrDatas as $ki => $gc) {
foreach($_FILES['datas']['name'] as $keys) {
$file_name = $keys['pics'];
$arrDatas[$ki]['img'] = $file_name;
}
}
但这不起作用,因为重命名文件和数组推送是分开的我无法知道名字是什么!...
感谢您抽出宝贵的时间......