在JavaScript中隐藏的表单文件发布(Hidden form file POST in jav

2019-10-30 15:07发布

因为在一个安全的环境中的Flex错误上传文件 ,我试图破解在一起的办法解决这个在JavaScript。

要做到这一点,我试图在JavaScript中创建一个隐藏的形式,而我会附上一个文件,一些XML元数据,那么它在多形式邮寄到服务器。 我首先想到的是让这个在HTML工作,然后口这段JavaScript代码到我的Flex项目。

我的第一个问题是附加的文件,以在JavaScript中隐藏的表单。 我错在这里做一些事情。 我用JavaScript很没有经验,所以如果有更好的方式来做到这一点,我渴望学习。

下面是我当前与打码。

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <title>hidden form post demo</title>
   </head>

   <body>
      <script>

         //helper function to create the form
         function getNewSubmitForm(){
             var submitForm = document.createElement("FORM");
             document.body.appendChild(submitForm);
             submitForm.method = "POST";
             submitForm.enctype = "multipart/form-data";
             return submitForm;
         }

         //helper function to add elements to the form
         function createNewFormElement(inputForm, inputType, elementName, elementValue) {
             var inputElement = document.createElement("INPUT");
             inputElement.name = elementName;
             inputElement.type = inputType;
             try {
                inputElement.value = elementValue;
             } catch(err) {
                alert(err.description);
             }
             inputForm.appendChild(inputElement);
             return inputElement;
         }

         //function that creates the form, adds some elements
         //and then submits it
         function createFormAndSubmit(){
             var submitForm = getNewSubmitForm();
             var selectedFileElement = document.getElementById("selectedFile");
             var selectedFile = selectedFileElement.files[0];
             createNewFormElement(submitForm, "HIDDEN", "xml", "my xml");
             createNewFormElement(submitForm, "FILE", "selectedFile", selectedFile);
             submitForm.action= "my url";
             submitForm.submit();
         }

      </script>


      <div id="docList">
        <h2>Documentation List</h2>
        <ul id="docs"></ul>
      </div>

      <input type="file" value="Click to create select file" id="selectedFile"/>
      <input type="button" value="Click to create form and submit" onclick="createFormAndSubmit()"/>
</body>

</html>

你可以看到,我有一个try / catch块createNewFormElement 。 一个异常被抛出有,但有消息称“不确定”。

萤火虫,我可以看到elementValue被设置为一个文件对象,所以我真的不知道发生了什么事情。

Answer 1:

出于安全考虑, 可以不设置value的属性input[type=file] 。 您当前的代码并不需要JavaScript的,并且可以使用纯HTML编写:

<form method="post" enctype="multipart/form-data" action="myurl">
    <input type="file" value="Click to create select file" name="selectedFile" />
    <input type="hidden" name="xml" value="my xml" />
    <input type="submit" value="Click to create form and submit" />
</form>

如果你想,它可以动态地添加额外的非文件形式元素,用一个事件绑定到onsubmit处理程序。

<form ... onsubmit="addMoreinputs();" id="aForm">
...
<script>
function addMoreInputs(){
    var form = document.getElementById("aForm");
    // ...create and append extra elements.
    // once the function has finished, the form will be submitted, because
    //  the input[type=submit] element has been clicked.
}


Answer 2:

添加VAR DOM =的document.getElementById( “formdiv”); dom.appendChild(submitForm);

在createFormAndSubmit功能。 并加入您的网页上</ DIV ID = “formdiv”>。



文章来源: Hidden form file POST in javascript