论坛首页 入门技术论坛

在Tapestry实现文件上传与下载

浏览 3838 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-01-09  
开发工具:
1。eclipse3.0  +  spindle
2.容器:tomcat

开始:

1,首先,新建一个Tapestry工程文件,命名为upload,在向导里面有三个步骤,我基本是打入工程名就直接按回车了。新建好工程后,你可以看到一个典型的web目录,在  WEB-INF自动生成4个文件:

upload.appliaction  tapestry的应用程序文件。
Home.html        tapestry的模版文件
Home.page        tapestry的定义的摸版的配置文件
web.xml

2.接着,再新建两个Tapestry  page文件,各命名为Upload  ,Download.
(注意:要确认Generate  an  assiated  HTML  File,Ceate  a  new  class被选定,对于要生成的.java我还是用Upload,Download来命名!);

对于生产.page和.jwc文件spindle提供了一个比较有用的向导,省了我好多工夫,呵呵。

3,现在就可以写代码了。

(1)Home.html

代码如下:

<html  jwcid="@Shell"  title="欢迎学习Tapestry!">
<H1><FONT  color="red">十分钟搞定----在Tapestry实现文件上传与下载</FONT></H1>
<body>    
<p><a  href="#"  jwcid="@PageLink"  page="Upload">上传文件</a></p>                  
<p><a  href="#"  jwcid="@PageLink"  page="Dowload">下载文件</a></p>

</body></html>

(2)  Upload.html

<html  jwcid="@Shell"  title="上传文件">
<body>
     <H1><FONT  color="red">十分钟搞定----在Tapestry实现文件上传与下载</FONT></H1>
     <P><FORM  jwcid="@Form"  listener="ognl:listeners.submit">
         请选择你要上传的文件<input  jwcid="@Upload"  file="ognl:fileName"  type="file">
</input><INPUT  type="submit"  value="上传"/>  
   </FORM>
</body>
</html>

(3)Dowload.html

<html  jwcid="@Shell"  title="上传文件">
<body>
     <H1><FONT  color="red">十分钟搞定----在Tapestry实现文件上传与下载</FONT></H1>
     <a  href="#"  jwcid="@DirectLink"  listener="ognl:listeners.dowload">点击下载</a>
     </body>
</html>

4.到此,三个简单的html文件已经写好,接下来就实现java文件。

(1)Upload.java

package  wenone;
import  org.apache.tapestry.IRequestCycle;import  java.io.*;
import  org.apache.tapestry.html.BasePage;
import  org.apache.tapestry.request.IUploadFile;

public  abstract  class  Upload  extends  BasePage
{
       public  abstract  IUploadFile  getFile();

       public  void  formSubmit(IRequestCycle  cycle)
       {
               IUploadFile  file  =  getFile();

               if  (file  ==  null)
                       return;

               File  newFile=new  File(file.getFileName());

                 file.write(newFile);//存到当前工作区
               cycle.activate("Home");
       }
}

5.Dowload.java

package  wenone;

import  org.apache.tapestry.IRequestCycle;
import  org.apache.tapestry.html.BasePage;
import  java.io.*;

public  abstract  class  Download  extends  BasePage{

public  void  download(IRequestCycle  cycle)
{

     File  file=new  File("file.zip");
       try
       {
               HttpServletResponse  response  =
               cycle.getRequestContext().getResponse();


               byte[]  data  =  new  byte[1024];
               FileInputStream  in  =  document.getFileInputstream();


               response.setHeader("Content-disposition",
                   "inline;  filename="  +
                     document.getFileName());
               response.setContentType(file.getMimeType());
               response.setContentLength(new  Long(file.getSize()).intValue());
               ServletOutputStream  out  =  response.getOutputStream();

               while  (in.read(data)  >  -1)
               {
                       out.write(data);
               }
               in.close();
               response.flushBuffer();
       }
       catch  (IOException  e)
       {
               e.printStackTrace();
       }
}
6,接近尾声;有了spindle这个例子配置文件基本不用管了,呵呵。
发布到tomcat就可以运行了,http://localhost:8080/upload/app
   发表时间:2007-02-05  
这里边document是哪个类的引用啊?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics