2009-09-08 66 views
0

我正在编写一个Firefox扩展程序,用于在家中使用。基本上,我需要提交一个PDF文件和一些文本值到一个Web服务。现在我有一个HTML页面来做到这一点。我需要扩展来自动收集数据并将其提交给Web服务。如何使用Java脚本创建和提交表单

下面是可用的html。

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

这里有没有

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(); 

当提交与JS的数据,我从服务器获取以下异常的JavaScript。 例外

javax.servlet.ServletException:com.sun.jersey.api.container.ContainerException:javax.mail.MessagingException的:缺少启动边界

任何想法?

+0

我不认为你可以创建和填充这样的文件... – ceejayoz 2009-09-08 19:48:21

回答

2

你不能设置文件输入的值 - 否则你可以从人的机器上窃取文件。

0

出于安全原因,我不认为您可以修改<input type="file">字段的值。你可能需要找到另一种自动化的方法。

相关问题