Comment créer et soumettre un formulaire en utilisant Javascript
-
22-09-2019 - |
Question
J'écris une extension Firefox qui est à utiliser dans la maison. En fait, je dois soumettre un fichier pdf et certaines valeurs de texte à un service Web. En ce moment, j'ai une page html qui fait cela. J'ai besoin de l'extension pour automatiser la collecte et la soumission des données au service Web.
Voici le code html qui fonctionne.
<body>
<form name="frm_upload_file" enctype="multipart/form-data" method="post" action="my web service address">
<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td>ClientID</td>
<td><input type="text" name="client_id" /></td>
</tr>
<tr>
<td>HTML</td>
<td><input type="text" name="html" /></td>
</tr>
<tr>
<td align="right" class="inputtxt"> File: </td>
<td class="inputtxt">
<input name="pdf" type="file" />
</td>
</tr>
<tr>
<td align="left" colspan="2" class="inputtxt">
<p><br /><input type="submit" name="submit" value="Submit" /></p>
</td>
</tr>
</table>
Voici le javascript qui ne fonctionne pas
postToURL: function(html, file) {
var form = content.document.createElement("form");
form.setAttribute("enctype", "multipart/form-data");
form.setAttribute("method", "post");
form.setAttribute("action", "address to my web service");
var clientIDField = document.createElement("input");
clientIDField.setAttribute("type", "text");
clientIDField.setAttribute("name", "client_id");
clientIDField.setAttribute("value", "123456");
form.appendChild(clientIDField);
var htmlField = document.createElement("input");
htmlField.setAttribute("type", "text");
htmlField.setAttribute("name", "html");
htmlField.setAttribute("value", html);
form.appendChild(htmlField);
var fileField = document.createElement("input");
fileField.setAttribute("type", "file");
fileField.setAttribute("name", "pdf");
fileField.setAttribute("value", file);
form.appendChild(fileField);
content.document.body.appendChild(form);
form.submit();
Lors de la présentation des données avec les js, je reçois l'exception suivante à partir du serveur. exception
javax.servlet.ServletException: com.sun.jersey.api.container.ContainerException: javax.mail.MessagingException: limite missing
Toutes les idées?
La solution
Vous ne pouvez pas définir la valeur d'une entrée de fichier -. Sinon vous pouvez voler des fichiers des machines des gens
Autres conseils
Je ne pense pas que vous pouvez modifier la valeur d'un champ de <input type="file">
pour des raisons de sécurité. Vous aurez probablement besoin de trouver un autre moyen d'automatiser cela.