猿问

如何从二维数组中的表单接收图像?

我有一个上传产品的表单,一个用户可以上传1个以上的产品,每个产品可以有很多图片(最多6张)


示例:产品 0 = 图像 1、图像 2、图像 3。产品 1 = 图像 1、图像 2。这是数组形式的样子:


Images[0][0] = image 1

Images[0][1] = image 2

Images[0][2] = image 3

Images[1][0] = image 1

Images[1][1] = image 2

问题是我没有从表单中收到二维数组,我想我收到的是一个包含 N 个图像的数组,就像这样


Images[0]

Images[1]

Images[2]

Images[3]

Images[4]

这使得无法将图像分配给产品。我正在接收图像$_FILES['photo']['name']并循环遍历数组


发送图像的形式是这个


<input type="file" class="form-control-file" id="photo" name="photo[]" onchange="return fileValidation()" value="Photo" multiple="multiple" required/>

我不知道我是否需要添加 name="photo[][]" 或类似的东西


其实上传图片不是问题,那部分工作正常,问题来了,当我们需要将每张图片添加到对应的产品中时,如果我们在一个数组中收到一堆图片就不可能知道如何许多图像被发送到每个产品。


眼眸繁星
浏览 201回答 2
2回答

12345678_0001

也许使用下标将图像集与每个产品相关联:<form>&nbsp; &nbsp; <input type="file" name="product[0][image][]" ...>&nbsp; &nbsp; <input type="file" name="product[1][image][]" ...></form>然后,您可以使用以下命令遍历图像集:foreach ($_FILES['product']['image'] as $k => $v) {&nbsp; &nbsp; foreach ($v['name'] as $name) {&nbsp; &nbsp; &nbsp; &nbsp; echo "Processing item $name in image set $k";&nbsp; &nbsp; }}

Qyouu

上传文件时,PHP$_FILES不是文件数组,而是类似的数组,Array(&nbsp; &nbsp; [name] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => facepalm2.jpg&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] => facepalm3.jpg&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; [type] => Array&nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] => image/jpeg&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] => image/jpeg&nbsp; &nbsp; &nbsp; &nbsp; )&nbsp; &nbsp; &nbsp; &nbsp; ...)你应该像这样访问它foreach($_FILES["photo"]["tmp_name"] as $index => $temp_name){&nbsp; &nbsp; echo $_FILES["photo"]["name"][$index];&nbsp; &nbsp; echo $_FILES["photo"]["size"][$index];}
随时随地看视频慕课网APP
我要回答