我在表单外面有一个文件输入元素。在表单提交上,我想将文件内容作为多部分表单数据发送到服务器。我无法将文件元素插入表单中。还有其他办法吗?
<input type="file" class="file" style="width:117px" name="c2vFile" onchange="onFileChange2(this.value);"/>
<form style="display:none" id="frmActivate" enctype="multipart/form-data">
<input type="hidden" id="act_groupActivationJson" name="groupActivationJson" />
<input type="hidden" id="act_remarks" name="comments" />
<input type="hidden" id="activatee" name="activatee" />
</form>
答案 0 :(得分:0)
文件输入需要在表单标记内。你提到过你不能,但为什么不呢?你需要删除&#34; display:none&#34;,它当前没有用处,因为输入都是隐藏的。
答案 1 :(得分:0)
您可以使用AJAX提交在表单标记之外发送文件。您可以按照以下链接有助于使用ajax发送文件。 但是你必须在点击提交按钮时调用这个功能。完成文件上传后,应该发生表单提交。
答案 2 :(得分:0)
我用这个做了一个小技巧并且它有效,请检查它是否对你有帮助 在提交表单之前添加侦听器并使用表单附加输入字段。
document.getElementById('frmActivate').addEventListener("submit", function() {
var fileinput = document.getElementById('filein');//take the file input
var thisel = document.getElementById('frmActivate');// take the form element
var cln = fileinput.cloneNode(true);//clone the file input element
thisel.appendChild(cln);//append the clone in the form element
thisel.submit();
})
<input type="file" id="filein" class="file" style="width: 117px" name="c2vFile" onchange="onFileChange2(this.value);" />
<form style="" id="frmActivate" enctype="multipart/form-data">
<input type="hidden" id="act_groupActivationJson" name="groupActivationJson" />
<input type="hidden" id="act_remarks" name="comments" />
<input type="hidden" id="activatee" name="activatee" />
<input type="submit" value="submit" />
</form>
<?php var_dump($_FILES);//to confirm if file is submitted ?>