【问题标题】:Input type="file" data empty when posted发布时输入 type="file" 数据为空
【发布时间】:2020-01-21 00:44:25
【问题描述】:

我正在制作一个车辆损坏表单,用户可以在其中点击他们车辆的图片。

它是如何工作的?

  1. 他们选择想要点击的照片的描述。
  2. 然后他们点击添加按钮
  3. 我将输入类型文件作为子项附加到 div 中(位于表单元素内)。

问题?

这些附加的输入类型文件不会将数据传递到下一页。

我尝试了什么?

我在我的 html 代码中添加了输入类型文件字段,它运行良好。我能够通过 PHP 在下一页上获取数据。但是当我通过 javascript 添加相同的文件元素时,它不会传递数据。我的 $_FILES 数组显示为空。

HTML 代码

<div class="meet-mainbody">

<form action="tst.php" method="POST" enctype="multipart/form-data">

<div class="row">
<div class="col-sm-6">
    <h3>Panel Damage</h3>
</div>
<div class="col-sm-3"><input type="radio" name="panel_damage" class="meet-checkbox" value="No" checked  onclick="shwPanelPhoto('panDamag', 'N')"/> NO</div>
<div class="col-sm-3"><input type="radio" name="panel_damage" class="meet-checkbox" value="Yes" onclick="shwPanelPhoto('panDamag', 'Y')"/> YES</div>
</div>
<br>
<div class="row hid_field" id="panDamag">
<div class="col-sm-6">
    <select name="panvalues" class="meet-select" id="panDamType">
        <option value="">Choose a Photo Description</option>
        <?php
            $getPanD = "SELECT S.OptionName, S.Active FROM table1 Q
                    LEFT JOIN table2 L on Q.QuestionID = L.QuestnID
                    LEFT join table3 S on L.OptionID = S.SelectID
                    WHERE Q.QuestionID = '15' and S.SelectType = 'AddedBox' and S.Active = 'true'";
            $getPanDPass = sqlsrv_query($conn, $getPanD, $params, $options);
            if($getPanDPass){
                while($PDrow = sqlsrv_fetch_array($getPanDPass, SQLSRV_FETCH_ASSOC)){
                    echo'<option value="'.$PDrow['OptionName'].'">'.$PDrow['OptionName'].'</option>';
                }
            }
            echo '</select>';
        ?>
    </select>
</div>
<div class="col-sm-6"><button type="button" class="panel-button" onclick="AddChooseFile('shwChoos')">ADD</button></div>
</div>
<br>

<div id="shwChoos"></div>
<br><br>
<!--- end code here---->
<center><input id="sub_btn" type="submit" class="meet-button meet-disabled " name="submit" value="Submit" disabled /></center>
</form>
</div>

这是我通过 javacsript 添加输入类型文件的代码

function AddChooseFile(opt){
    var typ = document.getElementById('panDamType').value;
    var par = document.getElementById('shwChoos');
    var cnt =  par.childElementCount;
    console.log('count is '+cnt);
    //create elements
    var elm1 = document.createElement('div');
    elm1.setAttribute('class', 'row');
    elm1.setAttribute('id', '');

    // elm1.innerHTML = '<div class="col-sm-4"><b>'+typ+'</b></div>'+
                    // '<div class="col-sm-4"><input type="file" name="mtu" accept="image/*" capture required ></div>'+
                    // '<div class="col-sm-4"><i class="fas fa-trash" onclick=""></i></div>';
    var elm2 = document.createElement('input');
    elm2.setAttribute('type', 'file');
    elm2.setAttribute('name', 'mtu');
    elm2.setAttribute('accept', 'image/*');


    elm1.appendChild(elm2);
    par.appendChild(elm1);
    par.appendChild(document.createElement('br'));


}

【问题讨论】:

  • 您能告诉我们您的表单 HTML 代码吗?
  • 这可能是相关的,stackoverflow.com/questions/4526273/…
  • 这是一个“php”问题的位置和方式?
  • “我的 $_FILE 数组显示为空。” - 您的意思是 “我的 $_FILES 数组显示为空。” 吗?关于“这些附加的输入类型文件没有将数据传递到下一页。” - 你应该为所有这些发布HTML和PHP;到目前为止都是猜测。
  • 可以添加表单的HTML吗?

标签: javascript image file


【解决方案1】:

谢谢大家。但我找到了答案。表单标签在错误的位置。我将它移到主 div 的顶部,它开始工作。道歉

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多