文档章节

jeecg中上传附件的处理

z_jordon
 z_jordon
发布于 2015/04/21 10:36
字数 561
阅读 1W
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

在jeecg中如果用了formvalid标签来生成表单代码的话,是不能同时提交附件的,比如最常用的html标签 input type="file"是不能用的,后台接收不到附件,具体原因是因为jeecg中都是用ajax的方式来提交表单并且不支持附件的处理,如果要在表单中同时提交附件,只能使用jeecg的upload标签,并且附件的提交和表单其它参数的提交实际上是分两步来处理的,具体实现过程如下:

  1. 在需要上传附件的地方增加upload标签:

<t:upload name="fiels" id="file_upload" extend="txt" buttonText="添加文件" multi="false" formData="taskId" uploader="smTaskController.do?importTxt">
            </t:upload>

其中比较主要的属性是formData和uploader,formData属性是在上传附件是要一起提交的表单参数,一般是传业务表的主键,uploader属性是具体的处理附件的提交路径

2.在fomrvalid标签中增加callback属性

<t:formvalid formid="formobj" dialog="true" layout="table" action="smTaskController.do?save" callback="@Override uploadFile">

3. 在页面顶部head之间增加相应的处理代码:

<script type="text/javascript">
  $(function(){
    //查看模式情况下,删除和上传附件功能禁止使用
    if(location.href.indexOf("load=detail")!=-1){
        $(".jeecgDetail").hide();
    }
   });
 
      function uploadFile(data){
          $("#taskId").val(data.obj.id);
          if($(".uploadify-queue-item").length>0){
              upload();
          }else{
              frameElement.api.opener.reloadTable();
              frameElement.api.close();
          }
      }
       
      function close(){
          frameElement.api.close();
      }
  </script>

其中最主要的就是uploadFile这个函数了,这边的主要逻揖就是获取业务表保存成功后返回的业务表的唯一标识设置在表单的隐藏属性当中,然后调用upload方法上传附件

4.最后在controller接收附件并处理,如下:

@RequestMapping(params = "importTxt", method = RequestMethod.POST)
	@ResponseBody
	public AjaxJson importTxt(HttpServletRequest request) {
		AjaxJson j = new AjaxJson();
		String taskId = request.getParameter("taskId");
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
		Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
		for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
			try {
				
				this.smTaskService.saveFile(taskId, entity.getValue().getInputStream());
				message = "短信任务添加成功";
			} catch (IOException e1) {
				e1.printStackTrace();
				message = "短信任务添加失败";
			} finally {
				try {
					entity.getValue().getInputStream().close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		j.setMsg(message);
		return j;
	}

其中要把HttpServletRequest参数强制转化为MultipartHttpServletRequest类型后再获取文件流进行处理,用springmvc中的@RequestParam MultipartFile参数直接获取附件是获取不到的,具体原因不是太清楚。

z_jordon
粉丝 37
博文 252
码字总数 78214
作品 0
厦门
技术主管
私信 提问
加载中
请先登录后再评论。
基于 ThinkPHP 的内容管理系统--歪酷CMS

歪酷网站管理系统(歪酷CMS)是一款基于THINKPHP框架开发的PHP+MYSQL网站建站程序,本程序实现了文章和栏目的批量动态管理,支持栏目无限分类,实现多管理员管理,程序辅助功能也基本实现了常见的文...

鲁大在线
2013/02/19
7K
2
Web 的 SSH 控制台--KeyBox

KeyBox 是一个基于 Web 的 SSH 控制台,用于同步管理多个系统并且可执行远程命令。允许你共享终端命令并上传文件到所有系统。但连接会话打开时你可选择在其中一个终端或者多个终端上执行命令...

匿名
2013/02/28
8.4K
0
Steam Installer for Wheezy

Linux游戏最近因为Valve旗下Steam平台的支持而获得快速增长。最初Steam只承诺支持最流行的桌面发行版Ubuntu,但最近它已向其它流行发行版开放了大门。但如果你使用的是不那么流行的发行版呢?...

匿名
2013/03/06
893
0
简单邮件联系页面带飞信通知模块

一个简单的“发邮件给我”的页面,支持HTML邮件编辑,支持附件发送,支持飞信短信提醒。里面有很多可以定制的地方,包括邮件的发送方式、前端页面的设计等等。 如果你也跟我一样喜欢通过邮件...

leehorsley
2012/10/22
1.6K
0
阿里云开放存储服务的C语言SDK--OSSC

OSSC(Aliyun Open Storage Service C SDK)为阿里云开放存储服务(OSS)提供了一套完整易用的C SDK。 OSSC完全采用C语言开发,并实现了类似面向对象的调用方式,遵循了良好的编码规范,目前O...

大卷卷
2012/10/22
4.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

Hacker News 简讯 2020-08-12

最后更新时间: 2020-08-12 00:01 Single Page Applications using Rust - (sheshbabu.com) 使用Rust的单页应用程序 得分:126 | 评论:68 The case for why Google should be regulated as a ......

FalconChen
14分钟前
19
0
在关系数据库中存储分层数据有哪些选择? [关闭]

问题: Good Overviews 良好的概述 Generally speaking, you're making a decision between fast read times (for example, nested set) or fast write times (adjacency list). 一般来说,您......

fyin1314
昨天
7
0
创建myBatis项目

1、简介 1.1、核心组件 SqlSessionFactoryBuilder(构造器):根据配置信息或者代码生成SqlSessionFactory SqlSessionFactory(工厂接口):依靠工厂来生成SqlSession(会话) SqlSession(会话): ...

执键走天涯
昨天
5
0
Tomcat集群带来的问题和解决思路

Tomcat集群 存在问题 解决方案 基于Redis+Cookie+Jackson+Filter的原生解决集群Session共享问题 使用Spring Session零侵入解决Session共享 单点登录实现 Redis构建Session服务器 使用Redis+C...

code-ortaerc
昨天
17
0
小福利

点击有福利 本文分享自微信公众号 - V5codings(gh_c1ec2d16ec93)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

V5codings
2019/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部