将文件数据作为多部分表单数据发送到服务器

时间:2016-02-29 06:21:22

标签: javascript

我在表单外面有一个文件输入元素。在表单提交上,我想将文件内容作为多部分表单数据发送到服务器。我无法将文件元素插入表单中。还有其他办法吗?

<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>

3 个答案:

答案 0 :(得分:0)

文件输入需要在表单标记内。你提到过你不能,但为什么不呢?你需要删除&#34; display:none&#34;,它当前没有用处,因为输入都是隐藏的。

答案 1 :(得分:0)

您可以使用AJAX提交在表单标记之外发送文件。您可以按照以下链接有助于使用ajax发送文件。 但是你必须在点击提交按钮时调用这个功能。完成文件上传后,应该发生表单提交。

jQuery Ajax File Upload

答案 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 ?>
您可以在此demo中看到此代码正常工作 希望这对你有用。