`

extjs4,spring mvc3上传文件

阅读更多
  本文讲解下extjs4结合spring mvc3的注解完成上传文件的例子。

1 页面文件
   <!-- Ext JS Files -->
<link rel="stylesheet" type="text/css" href="/extjs4-file-upload-spring/extjs/resources/css/ext-all.css" />
    <script type="text/javascript" src="/extjs4-file-upload-spring/extjs/bootstrap.js"></script>

<!-- file upload form -->
<script src="/extjs4-file-upload-spring/js/file-upload.js"></script>

</head>
<body>

Click on "Browse" button (image) to select a file and click on Upload button


<div id="fi-form" style="padding:25px;"></div>
</body>

2 EXTjs的文件
   Ext.onReady(function(){

    Ext.create('Ext.form.Panel', {
        title: 'File Uploader',
        width: 400,
        bodyPadding: 10,
        frame: true,
        renderTo: 'fi-form',   
        items: [{
            xtype: 'filefield',
            name: 'file',
            fieldLabel: 'File',
            labelWidth: 50,
            msgTarget: 'side',
            allowBlank: false,
            anchor: '100%',
            buttonText: 'Select a File...'
        }],

        buttons: [{
            text: 'Upload',
            handler: function() {
                var form = this.up('form').getForm();
                if(form.isValid()){
                    form.submit({
                        url: 'upload.action',
                        waitMsg: 'Uploading your file...',
                        success: function(fp, o) {
                            Ext.Msg.alert('Success', 'Your file has been uploaded.');
                        }
                    });
                }
            }
        }]
    });

});

3 上传文件的bean
   
import org.springframework.web.multipart.commons.CommonsMultipartFile;


public class FileUploadBean {

	private CommonsMultipartFile file;

	public CommonsMultipartFile getFile() {
		return file;
	}

	public void setFile(CommonsMultipartFile file) {
		this.file = file;
	}
}

 


4 为了让extjs显示信息,再设计一个bean
public class ExtJSFormResult {

	private boolean success;
	
	public boolean isSuccess() {
		return success;
	}
	public void setSuccess(boolean success) {
		this.success = success;
	}
	
	public String toString(){
		return "{success:"+this.success+"}";
	}
}


  这里其实是返回是否成功

5 controller层
  
@Controller
@RequestMapping(value = "/upload.action")
public class FileUploadController {

	@RequestMapping(method = RequestMethod.POST)
	public @ResponseBody String create(FileUploadBean uploadItem, BindingResult result){

		ExtJSFormResult extjsFormResult = new ExtJSFormResult();
		
		if (result.hasErrors()){
			for(ObjectError error : result.getAllErrors()){
				System.err.println("Error: " + error.getCode() +  " - " + error.getDefaultMessage());
			}
			
			//set extjs return - error
			extjsFormResult.setSuccess(false);
			
			return extjsFormResult.toString();
		}

		// Some type of file processing...
		System.err.println("-------------------------------------------");
		System.err.println("Test upload: " + uploadItem.getFile().getOriginalFilename());
		System.err.println("-------------------------------------------");
		 if(uploadItem.getFile().getSize()>0){                   
		        try {    
		            SaveFileFromInputStream(uploadItem.getFile().getInputStream(),"D://",uploadItem.getFile().getOriginalFilename());    
		        } catch (IOException e) {    
		            System.out.println(e.getMessage());    
		            return null;    
		        }    
		    }    
		//set extjs return - sucsess
		extjsFormResult.setSuccess(true);
		
		return extjsFormResult.toString();
	}
	
	/* **保存文件   
	
	   * @param stream   
	   * @param path   
	   * @param filename   
	   * @throws IOException   
	   */   
	  public void SaveFileFromInputStream(InputStream stream,String path,String filename) throws IOException    
	  {          
	   FileOutputStream fs=new FileOutputStream(path + "/"+ filename);
	   byte[]  buffer=new byte[1024*1024];
	   int bytesum = 0;    
	      int byteread = 0; 
	        while ((byteread=stream.read())!=-1)
	        {
	        	bytesum+=byteread;
	        	
	        	  fs.write(buffer,0,byteread);    
	              fs.flush();    
	        	
	        }
	        fs.close();    
	        stream.close();    
	  }    


  可以看到,当出现错误时,extjsFormResult.setSuccess(false);

return extjsFormResult.toString();
  这两句返回给前端ext js处理。
  最后就是配置MVC了
 
<!-- Activates various annotations to be detected in bean classes -->
    <context:annotation-config />

    <!-- Scans the classpath of this application for @Components to deploy as beans -->
    <context:component-scan base-package="com.loiane"/>

    <!-- Configures Spring MVC -->
    <import resource="mvc-config.xml"/>

    <!-- Configure the multipart resolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- one of the properties available; the maximum file size in bytes -->
        <property name="maxUploadSize" value="100000"/>
      
    </bean>

  设置文件大小限制

  一个很奇怪的问题是,在ie 7下,好象有点问题,待解决,但在firefox和chrome下都没问题,这个extjs 真怪,不用ext,普通的spring mvc是没问题的哦
3
0
分享到:
评论
1 楼 546968662 2013-05-10  
[url]http://www.iteye.com/problems/94983 [/url]我的问题,给点意见

相关推荐

    Extjs + Spring MVC + hibernate + mysql

    标题 "Extjs + Spring MVC + hibernate + mysql" 涉及的是一个综合性的Web应用程序开发框架,结合了前端UI库、后端MVC框架、ORM工具和关系型数据库。让我们详细了解一下这些技术及其在实际项目中的应用。 1. ExtJS...

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库

    ExtJS4.1+MVC4+Spring.NET1.3+EF5 整合项目数据库(pdm、sql及sqlite数据库) 原文地址:http://blog.csdn.net/xz2001/article/details/8723266

    extjs4+Spring mvc实现简单的增删改查

    本demo是一个简单的java maven项目,数据库名和连接参数都配置在pom.xml中。后台使用了spring mvc,前台是extjs4,并且运用了extjs4的mvc模式。简单实现对一张表的增删改查操作,有不足之处,大家互相交流。

    ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合项目数据库

    ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合项目用到的数据库 原文地址: http://blog.csdn.net/xz2001/article/details/8716541 注:该数据库是20130411日修改后的。

    Extjs spring MVC

    在"ExtTest"这个项目中,可能包含了一些示例代码或配置文件,用于展示如何将ExtJS和Spring MVC整合在一起。通过查看这些文件,可以学习到具体的集成方法,如控制器的编写、视图的渲染、数据交互等。理解并掌握这种...

    spring mvc +Extjs

    本篇文章将深入探讨如何使用Spring MVC 3与ExtJS进行数据交互,特别是通过JSON格式来实现这一过程。 首先,Spring MVC 3引入了对RESTful服务的支持,使得JSON数据交换变得更加容易。JSON(JavaScript Object ...

    spring+mvc+mybatis+extjs整合

    【标题】"spring+mvc+mybatis+extjs整合"是一个经典的Java Web开发框架组合,广泛应用于企业级应用。这个项目结合了Spring MVC作为控制层,MyBatis作为数据访问层,以及ExtJS作为前端展示层,构建了一个完整的三层...

    ExtJS4.1+MVC3+Spring.NET1.3+EF5 整合源码

    ExtJS4.1+ASP.NET MVC3+Spring.NET1.3+EF5+SQLite 整合源码,本人整合多日,也算来之不易,需要的可以下载。 原文地址:http://blog.csdn.net/xz2001/article/details/8716541 涉及到以下框架:ExtJS4.1、MVC3、...

    spring mvc3 mybatis3 extjs 3.4权限管理系统

    本人初步采用spring mvc3 mybatis3 extjs 3.4开发进销存软件,有很好的参考价值,其中数据库采用oracle,分页采用调用oracle的存储过程,有很好的学习价值,若是想开发简单的CRM和进销存系统是极品参考的系统。...

    通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    2、采用Spring 3中最新最稳定的Spring MVC 3.2.8版本。 3、采用Hibernate 4.1.7。Spring MVC 3.2.8支持的最高Hibernate版本是4.1.7,更高的Hibernate版本和Spring MVC 3.2.8组合会遇到兼容问题。 4、Hibernate集成二...

    spring security3+extjs4项目(含数据库文件)

    在"spring security3+extjs4项目"中,`b_springmvc_extjs`可能包含的是Spring MVC与ExtJS 4 集成的应用代码。Spring MVC 是Spring 框架的一部分,用于处理Web请求和响应。它与ExtJS 4 结合,可以通过JSON或XML数据...

    ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8

    ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8完成的后台管理项目,觉得是值得参考的实用项目 下载链接

    spring mvc extjs

    3. **集成Spring MVC与ExtJS**: - **JSON**:通常作为Spring MVC和ExtJS之间的数据交换格式,Spring MVC通过`@ResponseBody`注解将处理结果转化为JSON。 - **Ajax请求**:ExtJS使用Ajax进行异步通信,与Spring ...

    spring mvc+hibernate+extjs代码示例

    这是一个基于Spring MVC、Hibernate和ExtJS的Web应用示例,主要展示了如何整合这三个技术来构建一个功能完善的后台管理系统。下面将分别对这三个技术及其整合方式进行详细介绍。 **Spring MVC** Spring MVC是Spring...

    spring+extjs项目文件

    1. RESTful API:Spring MVC可以通过配置轻松实现RESTful接口,供ExtJS前端调用。 2. JSON数据交换:Spring支持JSON序列化与反序列化,与ExtJS的数据模型对接,实现前后端数据交互。 3. Spring Security:集成Spring...

    Extjs4.0通用后台管理系统源码完整大型项目(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    1、采用Spring MVC的静态加载缓存功能,在首页将Javascript文件、CSS文件和图片等静态资源文件加载进来放进内存,极大提高ExtJS的加载速度。 2、三种皮肤主题:经典、灰色和海王星,支持多浏览器和多分辨率。 3、...

    Extjs5.0从入门到实战开发信息管理系统(Extjs基础、Extjs5新特性、Spring、Spring mvc)

    本教程从Extjs5的开发环境搭建开始,讲解了Extjs5的项目结构(包括核心文件的作用),Extjs类的一些基本概念,布局、事件、MVVM和MVC架构、路由器,数据绑定等的概念和实际使用,同时讲解了开发中常用的extjs UI...

    Java源码 Spring+MVC4+Hibernate4+ExtJS5

    Java源码 Spring+MVC4+Hibernate4+ExtJS5 系统说明如下: 1、系统导入后发布到应用服务器,例如tomcat上即可运行。 2、导入项目后请将项目编码设置为UTF-8,不是GBK。 3、导入后如果出现感叹号,请修改实际的...

Global site tag (gtag.js) - Google Analytics