2009-09-08 7 views
0

J'écris une extension Firefox qui doit être utilisée en interne. Fondamentalement, je dois soumettre un fichier pdf et quelques 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.Comment créer et soumettre un formulaire en utilisant Java Script

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> 

est ici le javascript qui n'a 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 de début manquant

Toutes les idées?

+0

Je ne pense pas que vous pouvez créer et remplir un fichier comme ça ... – ceejayoz

Répondre

2

Vous ne pouvez pas définir la valeur d'une entrée de fichier, sinon vous risquez de voler des fichiers sur les machines des utilisateurs.

0

Je ne pense pas que vous pouvez modifier la valeur d'un champ <input type="file"> pour des raisons de sécurité. Vous devrez probablement trouver un autre moyen d'automatiser cela.