2013-02-27 59 views
0

我正在处理Pllet网站中运行的Applet。 在我执行这个小程序,它执行下列操作步骤,Plone的管理页面中的一个:使用在Plone中运行的小程序查找.xls文件

  • 高级表单验证

  • 都在服务器硬盘与拷贝它的Excel模板一些附加为名称的数据(象calcoloOneri.xls变得calcoloOneriJohnFileOne.xls)

  • 形式的数据写入到新创建的文件

  • 本身NDS这个文件到WebService我创建了Excel转换成PDF

  • 可以让用户下载PDF格式的机器上

现在的问题是,因为我可能有不同的网站多intances不同的只是名字和其他一些东西,我参数化了我的小程序以运行到这些不同的场景中。 我特别注意了template.xls文件的位置,这可能会因站点结构/文件名称的必要性而有所不同。 加载applet的代码如下(从加载的页面获取):

<script src="http://www.java.com/js/deployJava.js"></script> 
<script>var user='admin'</script> 
<script>var comune='Andria'</script> 
<script>var numPratica=''</script> 
<script>var numPreinoltro='20482109022013'</script> 
<script>var classifica=''</script> 
<script>var numFascicolo=''</script> 
<script>var annoFascicolo=''</script> 
<script>var portalURL='http://xx.xx.xx.xx:xxxx/scia2'</script> 
<script> 
    var attributes = {code:'geotel.gui.Login.class', archive:'portal_url/++resource++java/GestioneOneri.jar, portal_url/++resource++java/mysql-connector-java-5.1.20-bin.jar, portal_url/++resource++java/poi-3.8-20120326.jar, portal_url/++resource++java/forms-1.3.0.jar', width:1024, height:700}; 
    var parameters = {jnlp_href:'portal_url/++resource++java/gestioneoneri.jnlp', nomeUtente:user, integrato:'true', portalUrl:portalURL, comune:comune, percorsoFileCalcoloOneri:'/++resource++java/', nomeFileCalcoloOneri:'calcoloOneri.xls', numPreinoltro:numPreinoltro, numPratica:numPratica, classifica:classifica, numFascicolo:numFascicolo, annoFascicolo:annoFascicolo}; 
    var version = '1.6'; 
    deployJava.runApplet(attributes, parameters, version); 
</script> 
<noscript> 
Niente plugin java! 
</noscript> 

当我从Plone的文档阅读,该++资源++的语法让CMS来检索XML注册登记的静态资源,我没有问题将它用于plone .pt文件。

所以,所有的阅读后,我前往我的浏览器,并写:

http://xx.xx.xx.xx:xxxx/scia2/++resource++java/calcoloOneri.xls 

和Chrome下载文件calcoloOneri.xls,所以我想,“我一定是在正确的轨道上”。

当我将这些值传递给我的小程序时出现问题。首先,由于我可以有多个站点运行此小程序,因此我将该网站的地址作为参数(portalUrl)。要检索excel文件的位置,我将++ resource ++ java/calcoloOneri.xls附加到门户网站URL,因为在浏览器中该地址是正确的。

在我的CopyFile方法我用下面的对象到Excel模板复制到一个新问题:

File f1 = new File(srFile); //srFile is "http://xx.xx.xx.xx:xxxx/scia2/++resource++java/calcoloOneri.xls" 
File f2 = new File(dtFile); 
InputStream in = new FileInputStream(f1); 
OutputStream out = new FileOutputStream(f2); 
byte[] buf = new byte[1024]; 
int len; 
while((len = in.read(buf)) > 0) 
{ 
    out.write(buf, 0, len); 
} 
in.close(); 
out.close(); 

我已经经历了我的皮肤java.io.File中不能处理这种网址,也不我可以使用我的小程序代码中的URL或URI对象来获取指向该文件的指针。

如何获取正确的字符串以将模板读入我的小程序?我错过了什么?

谢谢

回答

2

你可能会更好用xlwt库修改Excel文档做这一切的蟒蛇。然后,它可能是一个简单的网页表单。 Excel模板可能是一个文件内容类型的对象,所以你只需从那里修改文件数据,而不是进行远程调用。

否则,你可以这样做的方法是硬编码到Excel模板文件的路径。

如果你想下载从URL文件,谷歌搜索可以帮助:http://cookbooks.adobe.com/post_Download_a_file_from_a_URL_in_Java-17947.html

但是你解决它,是在执行作为接受用户提交的值,小心被从互联网上下载的可危险的。

+0

嗨,谢谢你的回复。我不想在python中执行它,因为我需要执行已经在Java applet中实现的操作。问题不在于我知道如何操作的下载方法,而在于识别从++资源++语法到硬盘上完整标准路径的路径。我已经对路径进行了硬编码,但是它非常容易出错。 – Andrea 2013-02-28 11:32:18

+2

无法从正在运行的Python服务器的Java ++ ++ ++ ++文件中了解文件系统路径。如果有的话,这将是一个安全风险。 – vangheem 2013-03-01 20:15:58

+0

不幸的是,这就是我担心的......谢谢你确认这一点。 – Andrea 2013-03-06 08:34:01

相关问题