struts2文件上传(保存为BLOB格式)
html文件:提供上传文件的入口
- <input type="file" name="upload"><!-- name很重要,与后面action文件对应 -->
xml文件:
- <!-- 上传资料 -->
- <action name="upload" class="web.FileUploadAction" method="execute">
- <!-- 上传成功,返回 -->
- <result name="success">success_commit.jsp</result>
- <result name="error">error.jsp</result>
- </action>
action文件:
- public class FileUploadAction {
- private String remark;// 备注
- private int id;// id
- private File upload;// 与html文件中input[type=file]必须一样
- private String uploadFileName;// 文件名,必须这样写,upload和html文件中input[type=file]必须,FileName
- ResultService rService = new ResultService();
- public String execute() {
- try {
- // 点击上传之后
- // 保存上传数据
- int row = 0;
- // 检查是否上传了文件
- if (uploadFileName != null && !uploadFileName.equals("")) {
- //考虑到需要保存文件进行的操作比较多,上传了文件另外保存
- row = rService.save(upload, uploadFileName, demandid,
- remark);
- } else {
- // 没有上传文件
- row = rService.save(demandid, remark);
- }
- if (row == 1) {// 修改的行数
- // 上传成功
- return "success";
- } else {
- //上传失败
- return "error";
- }
- } catch (Exception e) {
- return "error";
- }
- }
- // 以下是getter/setter方法(略去)
- }
service层
- public int save(File file, String filename, int id, String remark) {
- // 有文件保存方法
- String lj = copyfile(file, filename);
- Result res = new Result();
- res.setFile(new File(lj));
- res.setDemandid(id);
- res.setRemark(remark);
- res.setTitle(filename);
- return rDao.saveResult(res);
- }
- //没有文件的保存方法
- public int save(int id,String remark){
- Result res = new Result();
- res.setDemandid(id);
- res.setRemark(remark);
- return rDao.saveResultNoFile(res);
- }
- public String copyfile(File file, String filename) {
- // 把文件拷贝到服务器的指定目录下
- String realpath = ServletActionContext.getServletContext().getRealPath(
- "/info");
- String lj = realpath + "\\" + filename;
- try {
- if (file != null) {
- File savefile = new File(new File(realpath), filename);
- if (!savefile.getParentFile().exists()) {
- savefile.getParentFile().mkdirs();
- }
- // 调用copyFile方法
- FileUtils.copyFile(file, savefile);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return lj;
- }
dao层(与数据库进行交互)
- public int saveResult(Result res) {// 保存有文件的
- int row = 0;
- Connection conn = null;
- PreparedStatement ps = null;
- String sql = "insert into result(id,content,remark,time,title,demandid) values(id_result.nextval,?,?,?,?,?)";// Oracle数据库
- // id_result 序列号
- try {
- conn = DBUtil.getConn();
- File file = res.getFile();
- FileInputStream fis = new FileInputStream(file);
- ps = conn.prepareStatement(sql);
- int len = (int)file.length();
- ps.setBinaryStream(1, fis, len);
- ps.setString(2, res.getRemark());
- ps.setLong(3, System.currentTimeMillis());
- ps.setString(4, res.getTitle());
- ps.setInt(5, res.getDemandid());
- row = ps.executeUpdate();
- fis.close();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- DBUtil.close(conn, ps, null);
- }
- // 返回修改的行数
- return row;
- }
struts2文件上传(保存为BLOB格式)的更多相关文章
- Struts2文件上传下载
Struts2文件上传 Struts2提供 FileUpload拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容,fileUpload拦截器 默认在defau ...
- struts2文件上传,文件类型 allowedTypes
struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...
- 学习Struts--Chap07:Struts2文件上传和下载
1.struts2文件上传 1.1.struts2文件上传的基本概述 在开发web应用的时候,我们一般会为用户提供文件上传的功能,比如用户上传一张图像作为头像等.为了能上传文件,我们必须将表单的met ...
- 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...
- springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传
总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...
- Struts2文件上传和下载(原理)
转自:http://zhou568xiao.iteye.com/blog/220732 1. 文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1) ...
- Struts2 文件上传
一:表单准备 ① 要想使用HTML 表单上传一个或多个文件 –须把 HTML表单的 enctype属性设置为multipart/form-data –须把HTML 表单的method ...
- JAVA Web 之 struts2文件上传下载演示(二)(转)
JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...
- JAVA Web 之 struts2文件上传下载演示(一)(转)
JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...
随机推荐
- Squid 日志详解
原文地址: http://www.php-oa.com/2008/01/17/squid-log-access-store.html access.log 日志 在squid中access访问日志最为 ...
- Spring 3 整合Apache CXF WebService[转]
http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html 在CXF2版本中,整合Spring3发布CXF WebService就更加简单 ...
- Codeforces Round #326 (Div. 2) D. Duff in Beach dp
D. Duff in Beach Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/588/probl ...
- uoj #31. 【UR #2】猪猪侠再战括号序列 贪心
#31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...
- ListView删除选中的多项目
//ListView删除选中的多项目function DeleteMultSelItems(ListView:TListView):Boolean;var I: Integer;begin Res ...
- WIN8重见开始菜单
从win7进入win8感觉不适应,做为一个程序开发人员,更觉得不爽,因此想着如何恢复开始菜单,查了很多文章终于找到方法 首先,在桌面版Windows 8启动资源管理器,单击工具栏上的“查看”选项卡后, ...
- Android 滑动效果进阶篇(六)—— 倒影效果
上篇介绍了使用Animation实现3D动画旋转翻页效果,现在介绍图片倒影实现,先看效果图 本示例主要通过自定义Gallery和ImageAdapter(继承自BaseAdapter)实现 1.倒影绘 ...
- iOS开发——实用篇Swift篇&QQ登入界面实现
QQ登入界面实现 我们知道在App Store中几乎所有软件都设计到账户的登入,而我们最常见的就是QQ,微信,在没有踏入程序员这条不归路之前,看到一个个的界面都感觉好高大上的样子. 在学习的过程中,自 ...
- mybatis 关联映射传递多参数方法
<resultMap type="com.secoo.my.bean.OrderItemComment" id="orderItemResult"> ...
- currentTarget 与 Target 的区别
在一般情况下,target与currentTarget指向的是同一个对象.一般情况是指我们只对某一个独立的mc添加侦听器.如下: var mc:Sprite=new Sprite();addChild ...