我有一个基本脚本,允许用户批量上传产品到数据库。第一步是上传CSV文件。文件上传后,脚本会显示一个页面,使用户可以查看每个产品,并为每个产品添加一张或多张照片。
我使用的HTML类似于以下内容:
<input type="file" class="form-control" name="photos[]" id="photos" multiple>
每个产品都会显示一次HTML输入,所有这些都在一个HTML表单中。
当我在服务器端收到提交时,它正在将所有HTML输入中的所有产品照片合并到一个阵列中。问题是,我不知道哪些照片属于哪些产品。
有没有办法解决这个问题,以便我可以区分照片?每个产品可能有多张照片,我想从自己的选择框上传每一组。
答案 0 :(得分:4)
在<input>
名称中使用多维数组:
<input type="file" class="form-control" name="photos[productid][]" id="photos" multiple>
其中productid
是每种产品的产品ID。
答案 1 :(得分:0)
我假设你的PHP脚本正在根据CSV条目生成表单。
通过在photos[]
表单数组中输出某种唯一标识符,您可以将照片连接到相关条目。
arbirtrary例子:
<?php
$csv_entries = array( 'one', 'two', 'three' );
foreach( $csv_entries as $csv_unique_identifier ) : ?>
<input type="file" class="form-control" name="photos_<?php echo $csv_unique_identifier; ?>[]" id="photos" multiple>
<?php endforeach; ?>
编辑:将name="photos[$csv_unique_identifier]"
更改为photos_$csv_unique_identifier[]"
如果您从提交的表单中print_r( $__FILES__ )
,您将得到类似的内容(请务必向下滚动以完全查看示例):
Array
(
[photos_one] => Array
(
[name] => Array
(
[0] => one-2.txt
[1] => one-1.txt
)
[type] => Array
(
[0] => text/plain
[1] => text/plain
)
[tmp_name] => Array
(
[0] => /tmp/phpsXiiL3
[1] => /tmp/phpFW4ki3
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 4
[1] => 4
)
)
[photos_two] => Array
(
[name] => Array
(
[0] => two-2.txt
[1] => two-1.txt
)
[type] => Array
(
[0] => text/plain
[1] => text/plain
)
[tmp_name] => Array
(
[0] => /tmp/phpgouoP2
[1] => /tmp/phpRfNsm2
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 4
[1] => 4
)
)
[photos_three] => Array
(
[name] => Array
(
[0] =>
)
[type] => Array
(
[0] =>
)
[tmp_name] => Array
(
[0] =>
)
[error] => Array
(
[0] => 4
)
[size] => Array
(
[0] => 0
)
)
)
答案 2 :(得分:0)
与上面所说的一样,使用多维数组。
该数组将包含2个数组:[ids] [图像]
在HTML中,它将是这样的:
the loop you have {
<input type="file" name="photos[<?php echo $id ?>][<?php echo $i ?>]" class="form-control">
}
这就是接收数组的方法:
<?php
foreach ($_POST["photos"] as $id) {
foreach ($id as $photo) {
$sql[$id][$photo] = "INSERT INTO tableName (Photo, IDProduct) VALUES($photo, $id)";
}
}
?>
这只是一个例子,此示例中可能存在一些错误,但您必须使用多维数组执行此操作,然后使用foreach循环来获取数据。
祝你好运