Java天地
Struts文件上传和下载
jsp
<%
@ page language
=
"
java
"
contentType
=
"
text/html; charset=GBK
"
%>
<
html
>
<
head
>
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=gbk"
/>
<
title
></
title
>
</
head
>
<
body
>
<
br
>
<
html:form
action
="/datamanage.data.upload.do"
method
="post"
enctype
="multipart/form-data"
target
="_parent"
>
<
table
width
="45%"
border
="0"
align
="center"
cellpadding
="0"
cellspacing
="0"
class
="table_box"
>
<
tr
>
<
td
align
="center"
class
="title_box"
colspan
="2"
>
文件上传
</
td
>
</
tr
>
<
tr
>
<
td
>
文件:
</
td
>
<
td
>
<
html:file
property
="files"
styleClass
="text_2003"
/>
</
td
>
</
tr
>
<
tr
>
<
td
>
描述:
</
td
>
<
td
>
<
textarea
rows
="3"
cols
="40"
class
="text_2003"
name
="data_desc"
></
textarea
>
</
td
>
</
tr
>
<
tr
>
<
td
class
="bottom_box"
colspan
="2"
align
="center"
>
<
input
type
="button"
value
="上传"
styleClass
="button_2003"
onclick
="checkForm();"
/>
<
input
type
="button"
onclick
="cancle();"
value
="取消"
styleClass
="button_2003"
/>
</
td
>
</
tr
>
</
html:form
>
</
body
>
</
html
>
DataUploadForm
package
eoms.datamanage.struts.form;
import
eoms.common.base.BaseForm;
import
org.apache.struts.upload.FormFile;
public
class
DataUploadForm
extends
BaseForm
{
private
FormFile files;
private
String type_id;
private
String data_path;
private
String data_desc;
public
String getType_id()
{
return
type_id;
}
public
void
setType_id(String type_id)
{
this
.type_id
=
type_id;
}
public
FormFile getFiles()
{
return
files;
}
public
void
setFiles(FormFile file)
{
this
.files
=
file;
}
public
String getData_path()
{
return
data_path;
}
public
void
setData_path(String data_path)
{
this
.data_path
=
data_path;
}
public
String getData_desc()
{
return
data_desc;
}
public
void
setData_desc(String data_desc)
{
this
.data_desc
=
data_desc;
}
}
文件下载Action
package
eoms.datamanage.struts.action;
import
eoms.common.base.BaseAction;
import
eoms.datamanage.dao.DataTypeDAO;
import
org.apache.struts.action.ActionForm;
import
org.apache.struts.action.ActionForward;
import
org.apache.struts.action.ActionMapping;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
java.io.
*
;
import
java.net.URLEncoder;
public
class
DataDownAction
extends
BaseAction
{
public
ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws
Exception
{
DataTypeDAO typeDao
=
(DataTypeDAO)
this
.getBean(
"
DataTypeDAO
"
);
String type_id
=
request.getParameter(
"
type_id
"
);
String data_name
=
request.getParameter(
"
data_name
"
);
String path
=
typeDao.getDataTypeById(Integer.parseInt(type_id)).getData_path()
+
"
/
"
+
data_name;
BufferedInputStream bis
=
null
;
BufferedOutputStream bos
=
null
;
OutputStream fos
=
null
;
InputStream fis
=
null
;
String filepath
=
path;
System.out.println(
"
文件路径
"
+
filepath);
File uploadFile
=
new
File(filepath);
fis
=
new
FileInputStream(uploadFile);
bis
=
new
BufferedInputStream(fis);
fos
=
response.getOutputStream();
bos
=
new
BufferedOutputStream(fos);
//
这个就就是弹出下载对话框的关键代码
response.setHeader(
"
Content-disposition
"
,
"
attachment;filename=
"
+
URLEncoder.encode(data_name,
"
GBK
"
));
int
bytesRead
=
0
;
//
用输入流进行先读,然后用输出流去写
byte
[] buffer
=
new
byte
[
8192
];
while
((bytesRead
=
bis.read(buffer,
0
,
8192
))
!=
-
1
)
{
bos.write(buffer,
0
, bytesRead);
}
bos.flush();
fis.close();
bis.close();
fos.close();
bos.close();
return
null
;
}
}
文件上传Action
package
eoms.datamanage.struts.action;
import
com.metarnet.security.model.User;
import
eoms.common.Constants;
import
eoms.common.base.BaseAction;
import
eoms.datamanage.dao.DataDAO;
import
eoms.datamanage.dao.DataTypeDAO;
import
eoms.datamanage.model.DataModel;
import
eoms.datamanage.model.DataTypeModel;
import
eoms.datamanage.struts.form.DataUploadForm;
import
org.apache.struts.action.ActionForm;
import
org.apache.struts.action.ActionForward;
import
org.apache.struts.action.ActionMapping;
import
org.apache.struts.upload.FormFile;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
java.io.FileOutputStream;
import
java.io.InputStream;
import
java.io.OutputStream;
import
java.util.HashMap;
import
java.util.Map;
public
class
DataUploadAction
extends
BaseAction
{
public
ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
throws
Exception
{
User user
=
(User) request.getSession().getAttribute(
Constants.SESSION_USER_KEY);
DataTypeDAO typeDao
=
(DataTypeDAO)
this
.getBean(
"
DataTypeDAO
"
);
DataDAO dataDao
=
(DataDAO)
this
.getBean(
"
DataDAO
"
);
DataUploadForm theForm
=
(DataUploadForm) form;
FormFile file
=
theForm.getFiles();
//
取得上传的文件
String filePath
=
theForm.getData_path();
//
上传到指定的文件夹中
String fileDesc
=
theForm.getData_desc();
String type_id
=
theForm.getType_id();
try
{
InputStream stream
=
file.getInputStream();
//
把文件读入
OutputStream bos
=
new
FileOutputStream(filePath
+
"
/
"
+
file.getFileName());
//
建立一个上传文件的输出流
int
bytesRead
=
0
;
byte
[] buffer
=
new
byte
[
8192
];
while
((bytesRead
=
stream.read(buffer,
0
,
8192
))
!=
-
1
)
{
bos.write(buffer,
0
, bytesRead);
//
将文件写入服务器
}
bos.close();
stream.close();
DataTypeModel typeModel
=
typeDao.getDataTypeById(Integer.parseInt(type_id));
//
判断是否已经存在
Map map
=
new
HashMap();
map.put(
"
type_code
"
, typeModel.getData_type_code());
map.put(
"
data_name
"
, file.getFileName());
DataModel data
=
dataDao.getDataByTypeAndName(map);
if
(data
==
null
)
{
//
将资料信息保存进数据库
DataModel model
=
new
DataModel();
model.setData_type_code(typeModel.getData_type_code());
model.setData_name(file.getFileName());
model.setData_type(typeModel.getData_type_name());
model.setData_desc(fileDesc);
model.setData_author(user.getUserId());
dataDao.addNewData(model);
}
}
catch
(Exception e)
{
System.err.print(e);
}
request.setAttribute(
"
type_id
"
, type_id);
return
mapping.findForward(
"
success
"
);
}
}
posted on 2011-03-25 16:39
Mr.lu
阅读(193)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © Mr.lu
<
2024年12月
>
日
一
二
三
四
五
六
24
25
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
导航
BlogJava
首页
新随笔
联系
聚合
管理
统计
随笔 - 29
文章 - 25
评论 - 26
引用 - 0
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
2016年1月 (1)
2015年12月 (2)
2015年4月 (1)
2015年3月 (1)
2014年12月 (1)
2013年12月 (1)
2013年8月 (7)
2013年5月 (1)
2013年4月 (4)
2013年3月 (4)
2012年11月 (1)
2012年10月 (4)
2012年9月 (1)
文章档案
2016年2月 (1)
2014年12月 (1)
2014年5月 (1)
2014年4月 (1)
2013年4月 (1)
2013年3月 (1)
2012年9月 (5)
2012年6月 (1)
2011年6月 (2)
2011年4月 (5)
2011年3月 (6)
搜索
最新评论
1. re: textarea中输入换行、空格等,以正确的格式后台存储和前台显示
我了
个去
什么
--淡淡的
2. re: textarea中输入换行、空格等,以正确的格式后台存储和前台显示
法规和法规和法规和符合人体后对符合人体会让他的返回任何人的融合和的个人各的人格的若干的负荷的任何
--的发货的费
3. re: JPA学习笔记
非常实用
--刘高潮
4. re: textarea中输入换行、空格等,以正确的格式后台存储和前台显示[未登录]
啊啊啊啊 啊啊啊啊
啊啊啊啊
--1
5. re: JPA学习笔记
评论内容较长,点击标题查看
--zuidaima
阅读排行榜
1. JPA学习笔记(20239)
2. jQuery MiniUI学习(转载)(11710)
3. 获取八位UUID标识码(3366)
4. 将私有的jar包导入到maven本地库(1594)
5. 从url获取图片(1422)
评论排行榜
1. JPA学习笔记(3)
2. 从url获取图片(0)
3. webservice axis2学习(转载地址)(0)
4. jQuery MiniUI学习(转载)(0)
5. jquery ajax范例(0)