使用输入文件提交表单后$ _FILES数组为空

时间:2012-10-22 23:00:48

标签: javascript jquery forms input

我有一个表单,您必须通过添加链接或上传图像来添加图像。当你加载页面时,有一个url的输入文本,并且有一个我编写脚本的按钮,用于将输入文本的HTML更改为输入文件。

效果很好,但提交表单时出现问题,该动态上传输入的$ _FILE数组不存在。

这是用于交换输入的javascript代码:

function SwapImageMode()
{
    if(imageMode == 0)
    {
        imageMode = 1;
        $("#f_imagearea").html("<input type='file' name='addon_imgupld' id='f_upimgimput' name='addon_imgupld' style='margin-bottom:7px;' accept='image/*' onchange='inputFileChange();'/>");
    }
    else if(imageMode == 1)
    {
        imageMode = 0;
        $("#f_imagearea").html("<input type='text' name='addon_imgurl' class='styled_imput f_imgimput' onFocus=imgUrlImputFocus(); onBlur=imgUrlImputBlur(); />");  
    }
}

提交表单时的PHP代码:

if(isset($_POST["addon_imgurl"]) && !isset($_POST["addon_imgupld"]))
{
    $formImgMethod = 1; // link
}
else if(isset($_POST["addon_imgupld"]) && !isset($_POST["addon_imgurl"]))
{
    $formImgMethod = 2; // upload
}

if($formImgMethod == 2)
{
    echo($_FILES["addon_imgupld"]["name"]);
}

这是php的错误:

Notice: Undefined index: addon_imgupld in
C:\xampp\htdocs\addexp\agregar\index.php on line 49

1 个答案:

答案 0 :(得分:1)

错误很简单。您正在尝试访问不存在的数组键,因此您需要检查不同类型的表单提交。

只需在PHP表单处理程序中编写一个简单的条件:

if( !empty($_FILES["addon_imgupld"]) ){
  //file input
} elseif( !empty($_REQUEST["addon_imgurl"]) ) {
  //text input
} else {
  //error?
}

你会想要用任何类型的请求交换$ _REQUEST($ _POST,我假设......)。

UPDATE ::

这种条件错误:

else if(isset($_POST["addon_imgupld"]) && !isset($_POST["addon_imgurl"]))

应该是:

else if(isset($_FILES["addon_imgupld"]) && !isset($_POST["addon_imgurl"]))

更新2 ::

您是否将表单编码类型设置为multipart?如果没有,请将此属性添加到表单标记:

enctype="multipart/form-data"