使用 php 通过 POST 提交带有文件输入的多维数组


Submitting a multidimensional array with file input via POST with php

我有一个 php 表单,它有已知数量的列(例如顶级产品、价格、数量、文件(文件输入)),但行数未知,因为用户可以根据需要添加行。

我正在使用多维数组:

name="prod[0][name]"
name="prod[0][qty]"
name="prod[0][file]"

在我使用的帖子上

 if ( isset( $_POST['prod'] ) )
    {
        foreach ( $_POST['prod'] as $value )
        {
            //some code here
if (isset($_FILES[$value["file"]]["name"]) && 
    ($_FILES[$value["file"]]["size"] > 0) &&
    ($_FILES[$value["file"]]["error"]==0) &&
    $_FILES[$value["file"]]["name"] != "" )
  {
   //code of uploading file
 } 
    }

我的问题是我无法上传文件,我总是收到错误

$value["文件"] 未定义

请帮忙

该错误正确指出该级别的数组中没有file键。相反,您应该使用 foreach 循环中的密钥。

在我的头顶上,它应该是这样的:

foreach ( $_POST['prod'] as $key => $value ) {
                            ^^^^ this will be your numeric index
    //some code here
    if (isset($_FILES['prod']['name'][$key]['file']) ...

但是您最好做一个var_dump($_FILES['prod']);来确认这一点,因为我不确定 php 如何处理多级文件上传数组。

您是否在表单元素上设置了 enctype 属性?

<form ... enctype="multipart/form-data">
...
</form>

http://www.w3schools.com/tags/att_form_enctype.asp