当前位置:编程学习 > JAVA >>

怎么使用dorado+Hibernate+spring实现上传和下载功能.

本文介绍了如何利用dorado提供的FileController实现文件的上传及下载. FileController是dorado mapping中的一个抽象类. 通过对FileController的继承, 我们可以很容易的实现一组文件的上传及下载的功能.

1. 在dorado studio的Mapping中新建一个Controller. 例如:
<controller name="file" clazz="sample.file.SampleController">
    <action name="upload">
        <forward name="success" path="/file/upload-success.jsp" contextRelative="false" />
        <exception clazz="java.lang.Exception" path="/file/upload-failure.jsp" />
    </action>
</controller>
2. 为该Controller新建一个Java实现类. 注意在新建Java类的向导中不必勾选任何待重载的父类方法. 

3. 完成上述步骤后. 首先将实现类的父类改为FileController. 然后根据需要重载部分父类中的方法. 可以参考下面的例子:
 1package sample.file;
 2
 3import java.io.File;
 4import java.io.FileInputStream;
 5import java.io.InputStream;
 6import javax.servlet.http.HttpServletRequest;
 7
 8import org.apache.commons.fileupload.DiskFileUpload;
 9import org.apache.commons.fileupload.FileItem;
10import com.bstek.dorado.biz.FileController;
11import com.bstek.dorado.utils.*;
12
13/**//**
14 * SampleController
15 */
16public class SampleController
17    extends FileController {
18  private final String WORK_DIR = "d:/temp";
19
20  /**//**
21   * 设定 DiskFileUpload 的相关属性.
22   * <p>关于DiskFileUpload, 你可以到www.apache.org/commons查找FileUpload的文档</p>
23   *
24   * @param request HttpServletRequest
25   * @param fileUpload DiskFileUpload
26   * @param parameters MetaData
27   */
28  protected void initFileUpload(HttpServletRequest request,
29                                DiskFileUpload fileUpload, MetaData parameters) {
30    fileUpload.setSizeMax(1024 * 512); // 512K
31  }
32
33  /**//**
34   * 取得存放上传文件的目标目录
35   *
36   * @param request HttpServletRequest
37   * @param parameters MetaData
38   * @return String
39   */
40  protected String getUploadWorkDir(HttpServletRequest request,
41                                    MetaData parameters) {
42    return WORK_DIR;
43  }
44
45  /**//**
46   * 取得存储上传文件的文件名
47   *
48   * @param request HttpServletRequest
49   * @param fileName String
50   * @param parameters MetaData
51   * @return String
52   */
53  protected String getStoreFileName(HttpServletRequest request, String fileName,
54                                    MetaData parameters) {
55    return fileName;
56  }
57
58  /**//**
59   * 存储已经上传的文件
60   *
61   * @param request HttpServletRequest
62   * @param fileItem String
63   * @param storeFile String
64   * @param parameters MetaData
65   * @throws Exception
66   */
67  protected void storeUploadFile(HttpServletRequest request, FileItem fileItem,
68                                 File storeFile, MetaData parameters)
69      throws Exception {
70    super.storeUploadFile(request, fileItem, storeFile, parameters);
71
72    /**//** @todo 在这里您可以添加自己的代码记录上传文件信息 */
73  }
74
75  /**//**
76   * 取得将要下载的文件的文件名
77   *
78   * @param request HttpServletRequest
79   * @return String
80   */
81  protected String getDownLoadFileName(HttpServletRequest request) {
82    return request.getParameter("fileName");
83  }
84
85  /**//**
86   * 取得将要被下载的文件的文件输入流
87   *
88   * @param request HttpServletRequest
89   * @return InputStream
90   * @throws Exception
91   */
92  protected InputStream getDownloadFileInputStream(HttpServletRequest request)
93      throws Exception {
94    return new FileInputStream(WORK_DIR + File.separator +
95                               request.getParameter("fileName"));
96  }
97
98}
99
4. 添加一个jsp用来上传文件. 例如:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page errorPage="/dorado/exception.d" %>
<%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
  <center>    
    <form method="post" target="upload" enctype="multipart/form-data"
      action="<%=request.getContextPath()%>/file.upload.d">
      <input type="file" name="file1" size="40">
      <br>
      <input type="file" name="file2" size="40">
      <br>
      <input type="file" name="file3" size="40">
      <hr>
      <input type="submit" value=" 上传 ">
    </form>
  </center>
</body>
</html>

5. 如果要下载Server端的文件只要使用通过url访问我们新定义的FileController就可以了. 例如:
http://localhost:8080/xxxx/file.download.d?filename=文件名 

以上代码是在网上找到的几年前的实例,但是不能达到我的目的, 求高手赐教具体步骤于细节! --------------------编程问答--------------------  

好长一个问题,转个猴子~~ 帮你顶下 --------------------编程问答-------------------- 额、、是挺长的! --------------------编程问答-------------------- dorado没有接触过,帮顶一下

补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,