dorado技术园地
与您共同讨论dorado技术及其应用技巧
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
8 随笔 :: 0 文章 :: 37 评论 :: 1 Trackbacks
<
2005年7月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用链接
我的随笔
我的评论
我的参与
最新评论
随笔档案
(8)
2005年8月 (1)
2005年7月 (7)
链接
BSTEK锐道
dorado产品下载(免费)
dorado示例中心
搜索
最新评论
1. re: Dorado与Struts、Hibernate、Spring的集成开发模式
用过这个框架,觉得这个dorado框架非常非常的垃圾。完全不能满足一些个性化需求,而且楼上说的没错该框架的策略就是让你跟着我的套路去开发。坚决抵制如此烂的框架!
--javaercoder
2. re: dorado是什么?
学习了
--viqsoft
3. re: dorado是什么?
确实是噩梦,出了问题难找原因
--ufonaughty
4. re: dorado是什么?
用这个开发,简直就是一场恶梦~~
--程序员
5. re: dorado是什么?
恕我直言。。与政府相关的所谓成功案例一概不看好。。。
--anonymous
阅读排行榜
1. dorado是什么?(17580)
2. Dorado与Struts、Hibernate、Spring的集成开发模式(8046)
3. dorado的总体技术架构(6647)
4. 利用dorado mapping快速开发文件的上传和下载(5866)
5. 如何使用Dorado中的JDBC事务?(4233)
评论排行榜
1. dorado是什么?(20)
2. Dorado与Struts、Hibernate、Spring的集成开发模式(14)
3. 一些dorado studio的截图(2)
4. dorado的总体技术架构(1)
5. 利用dorado mapping快速开发文件的上传和下载(1)
利用dorado mapping快速开发文件的上传和下载
本文介绍了如何利用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. 然后根据需要重载部分父类中的方法. 可以参考下面的例子:
1
package sample.file;
2
3
import java.io.File;
4
import java.io.FileInputStream;
5
import java.io.InputStream;
6
import javax.servlet.http.HttpServletRequest;
7
8
import org.apache.commons.fileupload.DiskFileUpload;
9
import org.apache.commons.fileupload.FileItem;
10
import com.bstek.dorado.biz.FileController;
11
import com.bstek.dorado.utils.
*
;
12
13
/**/
/*
*
14
* SampleController
15
*/
16
public
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=文件名
posted on 2005-07-14 23:27
dorado技术园地
阅读(5866)
评论(1)
编辑
收藏
评论
#
re: 利用dorado mapping快速开发文件的上传和下载
2007-01-16 13:48
xiebo
类应该要是abstract的吧。不然无法继承。
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © dorado技术园地