`
宋双旺
  • 浏览: 159033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jeecg v2.0 实现上传功能

阅读更多

 

代码规则:

1、保证action为很薄的一层,接收数据、传递数据,根据service的结果对前端进行结果反馈;

2、service层,能处理的异常进行处理,处理不了的不进行try cathch,直接往上层抛出,通过日志记录异常信息;

 

1、页面效果如下图所示:

上传图片

 

2、jsp代码如下所示:

    <div class="easyui-panel" title="信息" style="width:400px">  
        <div style="padding:10px 0 10px 60px">  
        <form id="uploadForm" method="post" enctype="multipart/form-data" action="demoAction!upload.action">  
            <table>  
				<tr>
					<td>文件路径</td>
					<td><input name="filedata" class="easyui-validatebox" 
					                                   required="true" type="file" missingMessage="请选择上传文件" /></td>
				</tr>            
            </table>  
        </form>  
        </div>  
        <div style="text-align:center;padding:5px">  
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">提交</a>  
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a>  
        </div>  
    </div> 

 

 

3、js代码如下所示:

       function submitForm(){
      	 //提交Form
       	 var myForm = $('#uploadForm').form({
       			url : 'demoAction!upload.action',
       			success : function(data) {
       				var json = $.parseJSON(data);
       				if (json && json.success) {
       					window.parent.window.messageshow('成功',json.msg);
       				} else {
       				    window.parent.window.messageshow('失败','操作失败!');
       				}
       			}
       		});  
         if($('#uploadForm').form('validate')){
              myForm.submit();	
 	  }
       }  
       function clearForm(){ 
    	   $('#uploadForm')[0].reset();
       }  

 4、action层实现如下:

	// ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
	// ×××××××××××××××××××××××××××文件上传×××××××××××××××××××××××
	// ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××	
	
	//进入上传页面
	public String uploadInput(){
		return "upload-input";
	}
	//-----------------------上传文件---------------------------
	//浏览器传递过来的信息
	private File filedata;
	
	public File getFiledata() {
		return filedata;
	}
	public void setFiledata(File filedata) {
		this.filedata = filedata;
	}

	//上传文件
	public void upload(){
		Json j = new Json();
		try {
			demoService.upload(filedata);
			j.setSuccess(true);
			j.setMsg("文件上传成功!");
		} catch (Exception e) {
			j.setMsg("文件上传失败!");
			logger.error(ExceptionUtil.getExceptionMessage(e));
		}
		writeJson(j);		 
	}	

 

 

5、service层实现如下:

	public void upload(File filedata) throws IOException {
		 String destDir = "d:/upload";
		 MultiPartRequestWrapper mpRequest = (MultiPartRequestWrapper)ServletActionContext.getRequest();
		 File[] files = mpRequest.getFiles("filedata");   
		 String[] fileNames = mpRequest.getFileNames("filedata");
		 for(int i=0;i<files.length;i++){
			 File destFile = new File(destDir+"/"+fileNames[i]);
			 FileUtils.copyFile(files[i], destFile);
		 }
	}
	

 

  • 大小: 24.4 KB
分享到:
评论
2 楼 hoho922 2013-03-27  
页面是:
    <div class="easyui-panel" title="信息" style="width:400px">  
        <div style="padding:10px 0 10px 60px">  
        <form id="uploadForm" method="post" enctype="multipart/form-data" action="mosPayslipAction!upload.action">  
            <table>  
				<tr>
					<td>文件路径</td>
					<td><input name="filedata" class="easyui-validatebox" 
					                                   required="true" type="file" missingMessage="请选择上传文件" /></td>
				</tr>            
            </table>  
        </form>  
        </div>  
        <div style="text-align:center;padding:5px">  
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="submitForm()">提交</a>  
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a>  
        </div>  
    </div> 
1 楼 hoho922 2013-03-27  
请教个问题啊,我做上传功能时总提示错误:[org.apache.struts2.dispatcher.Dispatcher]Removing file filedata \tmp\upload__32d85328_13da9b6beb6__7fea_00000000.tmp。是不是拦截器配置有问题啊,麻烦指导下,谢谢!structs.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<constant name="struts.objectFactory" value="spring" />
	<constant name="struts.devMode" value="true" />
	<constant name="struts.configuration.xml.reload" value="true" />
	<constant name="struts.i18n.encoding" value="utf-8" />
	<constant name="struts.multipart.paeser" value="jakarta" />
	<constant name="struts.multipart.maxSize" value="104857600" />
	<constant name="struts.multipart.saveDir" value="/tmp"/>
	<package name="defaultPackage" extends="struts-default">
		<interceptors>
			<interceptor name="encodingInterceptor" class="com.jeecg.interceptor.EncodingInterceptor" />
			<interceptor-stack name="encodingStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="encodingInterceptor"></interceptor-ref>
			    <interceptor-ref name="checkbox">
	        	  <param name="uncheckedValue">0</param>
	   	        </interceptor-ref>
			</interceptor-stack>

			<interceptor name="sessionInterceptor" class="com.jeecg.interceptor.SessionInterceptor" />
			<interceptor-stack name="sessionStack">
				<interceptor-ref name="encodingStack"></interceptor-ref>
				<interceptor-ref name="sessionInterceptor">
					<param name="excludeMethods">repair,deleteAndRepair,loginDatagrid,loginCombobox,login,logout,reg,ctrlTree</param>
				</interceptor-ref>
			</interceptor-stack>

			<interceptor name="authInterceptor" class="com.jeecg.interceptor.AuthInterceptor" />
			<interceptor-stack name="authStack">
				<interceptor-ref name="sessionStack"></interceptor-ref>
				<interceptor-ref name="authInterceptor">
					<param name="excludeMethods">repair,deleteAndRepair,loginDatagrid,loginCombobox,login,logout,reg,ctrlTree,onlineDatagrid,roleCombobox,authTreeRecursive,menuTreeRecursive,modifySelfPwd,showUserInfo</param>
				</interceptor-ref>
			</interceptor-stack>

			<interceptor name="fileAuthInterceptor" class="com.jeecg.interceptor.FileAuthInterceptor" />
			<interceptor-stack name="authAndFileAuthStack">
				<interceptor-ref name="authStack"></interceptor-ref>
				<interceptor-ref name="fileAuthInterceptor">
					<param name="includeMethods">uploadFile,fileManager</param>
				</interceptor-ref>
			</interceptor-stack>
			
			<!-- url param定义拦截器  -->
			<interceptor name="urlParamsInterceptor"
				class="com.jeecg.interceptor.UrlParamsInterceptor"></interceptor>
			<interceptor-stack name="urlParamStack">
				<interceptor-ref name="params" />
				<interceptor-ref name="urlParamsInterceptor"/>
				<interceptor-ref name="store">
					<param name="operationMode">AUTOMATIC</param>
				</interceptor-ref>
				<interceptor-ref name="exception" />
				<interceptor-ref name="conversionError" />
				<interceptor-ref name="paramsPrepareParamsStack" />
			</interceptor-stack>
		</interceptors>

		<default-interceptor-ref name="authAndFileAuthStack"></default-interceptor-ref>

		<global-results>
			<result name="noAuth">/error/noAuth.jsp</result>
			<result name="noFileAuth">/error/noFileAuth.jsp</result>
			<result name="noSession">/error/noSession.jsp</result>
			<result name="strutsException">/error/strutsException.jsp</result>
			<result name="noLogin">/login.jsp</result>
			<result name="error">/error/err.jsp</result>
		</global-results>

		<global-exception-mappings>
			<exception-mapping result="strutsException"
				exception="java.lang.Exception"></exception-mapping>
		</global-exception-mappings>
	</package>
</struts>

相关推荐

    PhD_Thesis_Cristina_Pinneri.pdf

    PhD_Thesis_Cristina_Pinneri

    Git知识学习(尚硅谷)

    Git知识学习(尚硅谷)

    套筒机械加工工艺规程制订设计.rar

    套筒机械加工工艺规程制订设计.rar

    The First Adventures on Differential Geometry 9789811296178.pdf

    The First Adventures on Differential Geometry 9789811296178

    汽车防误踏油门机构的设计.zip

    汽车防误踏油门机构的设计.zip

    汽车离合器设计.zip

    汽车离合器设计.zip

    基于SpringBoot的文学创作社交论坛(源码+数据库+万字文档+ppt)533

    基于SpringBoot的文学创作社交论坛,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 1. **首页:** 浏览社交论坛的主要信息。 2. **火车信息:** 阅读和浏览用户发布的文学创作。 3. **公告资讯:** 查看社交论坛发布的重要通知和公告。 4. **后台管理:** - **首页:** 进行后台管理相关操作。 - **个人中心:** 管理个人信息,查看火车票订购历史等。 - **车票预订管理:** 预订文学创作,选择特定的创作者或主题。 - **车票退票管理:** 处理用户对已预订文学创作的退票请求。 5. **个人中心:** 管理个人信息。 【管理员功能】 1. **首页:** 查看社交论坛整体概况。 2. **个人中心:** 修改密码、管理个人信息。 3. **用户管理:** 审核和管理注册用户的信息。 4. **火车类型管理:** 管理文学创作的分类信息。 5. **火车信息管理:** 监管和管理社交论坛上的文学创作信息。 6. **车票预订管理:** 查看和管理用户的文学创作预订情况。 7. **车票退票管理:** 处理用户对已预订文学创作的退票请求。 8. **系统管理:** - **公告资讯:** 发布、编辑和删除系统的通知和公告。 - **关于我们:** 编辑和更新社交论坛的介绍。 - **系统简介:** 提供社交论坛的简要介绍。 - **轮播图管理:** 管理社交论坛首页的轮播图。 二、项目技术 编程语言:Java 数据库:MySQL 项目管理工具:Maven 前端技术:Vue 后端技术:SpringBoot 三、运行环境 操作系统:Windows、macOS都可以 JDK版本:JDK1.8以上都可以 开发工具:IDEA、Ecplise、Myecplise都可以 数据库

    数控铣床主轴箱设计.zip

    数控铣床主轴箱设计.zip

    某电镀废水工艺流程及平面布置图.zip

    某电镀废水工艺流程及平面布置图.zip

    joblib-0.9.0b4-py2.7.egg

    该资源为joblib-0.9.0b4-py2.7.egg,欢迎下载使用哦!

    价值60元的带会员和后台版的域名防红1.19最新免授权开心版

    管理会员制度渠道,掌管多种服务,黑白名单管理邮箱配置生成提醒发送对接易支付进行交易,订单列表,带有各种短网址功能提供接口对接,实现短网址+防红两不误,可自定义多中转域名,自动识别安全网址各种防红数据后台可显,自定义跳转网站 用户端android-ios 会员制度享受,自定义跳转网站,在线充值,我的生成,在线生成,为你的网址提供保护短网址列表接口文档数据显示,编辑我的生成 防红效果全网 在短网址与防红的前提下,为你的网站提供SEO服务以及腾讯相关网站检测的优化 贴吧+短视频平台+ios+android+pc皆正常 安装:上传源码,访问安装。提示授权时,随意填写 6位数字即可

    joblib-0.9.0b3.tar.gz

    该资源为joblib-0.9.0b3.tar.gz,欢迎下载使用哦!

    实时操作系统毕业设计项目内含说明书.zip

    实时操作系统毕业设计项目内含说明书.zip

    python相关学习资源,python

    python

    塑料瓶自动封口机设计.rar

    塑料瓶自动封口机设计.rar

    CarPlay 系统功能介绍,比较专业的文档,告诉我们开发Carplay的时候需要遵循的规则

    内容概要:本文介绍了苹果公司在WWDC19上发布的CarPlay系统的最新进展,主要包括四个方面的改进:不规则形状显示屏支持、多屏显示支持、动态屏幕尺寸调整以及“嘿,Siri”语音助手集成。不规则形状显示屏支持允许开发者为CarPlay定义交互区域,确保内容适应各种非矩形屏幕。多屏显示支持使车辆可以在多个屏幕上同时展示CarPlay界面,如中心控制台和仪表盘,提供导航、音乐播放等不同内容,并支持独立的夜间模式。动态屏幕尺寸调整功能让CarPlay界面可以实时调整大小,以适应不同的驾驶环境或用户需求。最后,“嘿,Siri”功能让用户可以通过语音唤醒Siri,即使在播放音乐时也能无缝交互,系统内置了持续的回声消除和降噪处理,确保语音识别的准确性。; 适合人群:汽车制造商、软件开发者以及对车载信息系统感兴趣的科技爱好者。; 使用场景及目标:①汽车制造商可以根据新的CarPlay特性优化车内娱乐和导航系统的用户体验;②开发者可以利用这些新特性创建更加丰富的车载应用程序;③科技爱好者可以了解最新的车载技术发展趋势。; 其他说明:文档详细描述了CarPlay系统的技术细节,包括语音活动检测器、关键词检测器、回声消除和降噪等功能的工作原理,以及车辆系统的要求,如始终开启的麦克风输入流处理、连续回声消除和降噪等。更多相关信息可参考苹果开发者网站。

    蓝桥杯第十六届省赛真题!

    内容概要:本文档为第十六届蓝桥杯单片机设计与开发项目省赛的程序设计试题说明,面向大学组。文档详细规定了比赛的基本要求、硬件配置、功能描述、性能要求、输出控制、显示功能、按键功能及初始状态。参赛者需要使用指定的单片机竞赛实训平台,完成环境温度、光强、物体运动状态的检测,并通过数码管、LED指示灯、继电器等实现相应的数据显示、状态指示与控制功能。所有程序需在Keil环境下开发,并按要求提交工程文件。 适合人群:具有单片机编程基础的大专院校学生或相关专业技术人员。 使用场景及目标:①掌握单片机编程技能,熟悉传感器数据采集与处理;②学会通过数码管、LED、继电器等实现人机交互界面的设计与实现;③提高对硬件资源的有效利用能力,确保系统的实时性和稳定性。 阅读建议:此资源旨在帮助参赛者理解比赛规则和技术要求,建议仔细阅读各项功能的具体实现细节,特别注意硬件配置、性能指标以及提交规范的要求。同时,在实际操作中要严格按照文档中的规定进行开发和测试,确保作品符合评分标准。

    液压剪式升降平台(step SolidWorks)设计.rar

    液压剪式升降平台(step SolidWorks)设计.rar

    基于Python开发的一款简单易用的IT管理软件.zip

    基于Python开发的一款简单易用的IT管理软件.zip

    Day09【基于新闻事件的命名实体抽取】

    关于新闻事件的命名实体的训练集数据

Global site tag (gtag.js) - Google Analytics