html文件:提供上传文件的入口

  1. <input type="file" name="upload"><!-- name很重要,与后面action文件对应 -->

xml文件:

  1. <!-- 上传资料 -->
  2. <action name="upload" class="web.FileUploadAction" method="execute">
  3. <!-- 上传成功,返回 -->
  4. <result name="success">success_commit.jsp</result>
  5. <result name="error">error.jsp</result>
  6. </action>

action文件:

  1. public class FileUploadAction {
  2. private String remark;// 备注
  3. private int id;// id
  4. private File upload;// 与html文件中input[type=file]必须一样
  5. private String uploadFileName;// 文件名,必须这样写,upload和html文件中input[type=file]必须,FileName
  6.  
  7. ResultService rService = new ResultService();
  8.  
  9. public String execute() {
  10. try {
  11. // 点击上传之后
  12. // 保存上传数据
  13. int row = 0;
  14. // 检查是否上传了文件
  15. if (uploadFileName != null && !uploadFileName.equals("")) {
  16. //考虑到需要保存文件进行的操作比较多,上传了文件另外保存
  17. row = rService.save(upload, uploadFileName, demandid,
  18. remark);
  19.  
  20. } else {
  21. // 没有上传文件
  22. row = rService.save(demandid, remark);
  23. }
  24.  
  25. if (row == 1) {// 修改的行数
  26. // 上传成功
  27. return "success";
  28. } else {
  29. //上传失败
  30. return "error";
  31. }
  32. } catch (Exception e) {
  33. return "error";
  34. }
  35. }
  36.  
  37. // 以下是getter/setter方法(略去)
  38. }

service层

  1. public int save(File file, String filename, int id, String remark) {
  2. // 有文件保存方法
  3. String lj = copyfile(file, filename);
  4. Result res = new Result();
  5. res.setFile(new File(lj));
  6. res.setDemandid(id);
  7. res.setRemark(remark);
  8. res.setTitle(filename);
  9. return rDao.saveResult(res);
  10. }
  11. //没有文件的保存方法
  12. public int save(int id,String remark){
  13. Result res = new Result();
  14. res.setDemandid(id);
  15. res.setRemark(remark);
  16. return rDao.saveResultNoFile(res);
  17. }
  18.  
  19. public String copyfile(File file, String filename) {
  20. // 把文件拷贝到服务器的指定目录下
  21. String realpath = ServletActionContext.getServletContext().getRealPath(
  22. "/info");
  23. String lj = realpath + "\\" + filename;
  24. try {
  25. if (file != null) {
  26. File savefile = new File(new File(realpath), filename);
  27. if (!savefile.getParentFile().exists()) {
  28. savefile.getParentFile().mkdirs();
  29. }
  30. // 调用copyFile方法
  31. FileUtils.copyFile(file, savefile);
  32. }
  33. } catch (Exception e) {
  34. e.printStackTrace();
  35. }
  36. return lj;
  37. }

dao层(与数据库进行交互)

  1. public int saveResult(Result res) {// 保存有文件的
  2. int row = 0;
  3. Connection conn = null;
  4. PreparedStatement ps = null;
  5. String sql = "insert into result(id,content,remark,time,title,demandid) values(id_result.nextval,?,?,?,?,?)";// Oracle数据库
  6. // id_result 序列号
  7. try {
  8. conn = DBUtil.getConn();
  9. File file = res.getFile();
  10. FileInputStream fis = new FileInputStream(file);
  11. ps = conn.prepareStatement(sql);
  12. int len = (int)file.length();
  13. ps.setBinaryStream(1, fis, len);
  14. ps.setString(2, res.getRemark());
  15. ps.setLong(3, System.currentTimeMillis());
  16. ps.setString(4, res.getTitle());
  17. ps.setInt(5, res.getDemandid());
  18.  
  19. row = ps.executeUpdate();
  20. fis.close();
  21.  
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. } finally {
  25. DBUtil.close(conn, ps, null);
  26. }
  27. // 返回修改的行数
  28. return row;
  29. }

struts2文件上传(保存为BLOB格式)的更多相关文章

  1. Struts2文件上传下载

    Struts2文件上传 Struts2提供 FileUpload拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容,fileUpload拦截器 默认在defau ...

  2. struts2文件上传,文件类型 allowedTypes

    struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript ...

  3. 学习Struts--Chap07:Struts2文件上传和下载

    1.struts2文件上传 1.1.struts2文件上传的基本概述 在开发web应用的时候,我们一般会为用户提供文件上传的功能,比如用户上传一张图像作为头像等.为了能上传文件,我们必须将表单的met ...

  4. 【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】

    一.struts2文件上传 1.上传文件的时候要求必须使得表单的enctype属性设置为multipart/form-data,把它的method属性设置为post 2.上传单个文件的时候需要在Act ...

  5. springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传

    总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...

  6. Struts2文件上传和下载(原理)

    转自:http://zhou568xiao.iteye.com/blog/220732 1.    文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1)     ...

  7. Struts2 文件上传

    一:表单准备 ① 要想使用HTML 表单上传一个或多个文件     –须把 HTML表单的 enctype属性设置为multipart/form-data     –须把HTML 表单的method ...

  8. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

  9. JAVA Web 之 struts2文件上传下载演示(一)(转)

    JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...

随机推荐

  1. Squid 日志详解

    原文地址: http://www.php-oa.com/2008/01/17/squid-log-access-store.html access.log 日志 在squid中access访问日志最为 ...

  2. Spring 3 整合Apache CXF WebService[转]

    http://www.cnblogs.com/hoojo/archive/2012/07/13/2590593.html 在CXF2版本中,整合Spring3发布CXF WebService就更加简单 ...

  3. 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 ...

  4. uoj #31. 【UR #2】猪猪侠再战括号序列 贪心

    #31. [UR #2]猪猪侠再战括号序列 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/31 Descript ...

  5. ListView删除选中的多项目

    //ListView删除选中的多项目function DeleteMultSelItems(ListView:TListView):Boolean;var  I: Integer;begin  Res ...

  6. WIN8重见开始菜单

    从win7进入win8感觉不适应,做为一个程序开发人员,更觉得不爽,因此想着如何恢复开始菜单,查了很多文章终于找到方法 首先,在桌面版Windows 8启动资源管理器,单击工具栏上的“查看”选项卡后, ...

  7. Android 滑动效果进阶篇(六)—— 倒影效果

    上篇介绍了使用Animation实现3D动画旋转翻页效果,现在介绍图片倒影实现,先看效果图 本示例主要通过自定义Gallery和ImageAdapter(继承自BaseAdapter)实现 1.倒影绘 ...

  8. iOS开发——实用篇Swift篇&QQ登入界面实现

    QQ登入界面实现 我们知道在App Store中几乎所有软件都设计到账户的登入,而我们最常见的就是QQ,微信,在没有踏入程序员这条不归路之前,看到一个个的界面都感觉好高大上的样子. 在学习的过程中,自 ...

  9. mybatis 关联映射传递多参数方法

    <resultMap type="com.secoo.my.bean.OrderItemComment" id="orderItemResult"> ...

  10. currentTarget 与 Target 的区别

    在一般情况下,target与currentTarget指向的是同一个对象.一般情况是指我们只对某一个独立的mc添加侦听器.如下: var mc:Sprite=new Sprite();addChild ...