`

用jQuery和Spring做ajax文件上传应该注意的一个问题!

    博客分类:
  • JAVA
阅读更多

我自从用了jQuery之后,操作html基本就靠$('#XXX')了。但是这几天重构代码,发现一个文件上传功能却莫名其妙的出错了。

我后台用的是Spring(IOC+MVC)+Hibernate,前端用jQuery+ajaxfileupload插件。这个程序原来是好好的,可不知被我改了哪,居然不响应了。

重新回顾一下全过程:

1.html表单

<div id="add_document_form">
	<ul>
		<li>
			<p>分类:</p>
			<select id="document_category" required="true">
				<option value="diya">抵押贷款</option>
				<option value="zhiya">质押贷款</option>
				<option value="xinyong">信用贷款</option>
				<option value="danbao">担保贷款</option>
			</select>
		</li>
		<li>
			<p>文件:</p>
			<input id="select_document"  type="file" required="true" />
		</li>
	</ul>
</div>	

 2.配置Spring MVC

 

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"
	default-lazy-init="false" default-autowire="byName">
	
	<!-- ①:对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->
	<context:component-scan base-package="org.dreamworker.**.controller" />
	
	<!-- ②:启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

	<!-- 文件上传 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="100000000" />
		<property name="defaultEncoding" value="UTF-8" />
	</bean>
</beans>

 3.创建Controller,我已经把请求转发到Servic了。(简化版)

 

/**
 * 上传文件
 * @param inputId input控件的id
 * @param request
 * @return
 */
public void doUpLoadFile(String inputId, HttpServletRequest request){
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
		String fileDir =  "e:\\dreamworker\\crm\\" + user.getName() + "\\";//文件存放目录
		FileTools.addFolder(fileDir);
		
		CommonsMultipartFile cFile = (CommonsMultipartFile) multipartRequest.getFile(inputId);//获取上传文件
		if(null != cFile){
			if(!cFile.isEmpty()){
				//上传文件
				String uuid = new Long(UUID.randomUUID().getMostSignificantBits()).toString();
				File uploadedFile = new File(fileDir + uuid);
				FileCopyUtils.copy(cFile.getBytes(), uploadedFile);
			}
		}
}
 

应该都配好了吧,现在可以上传了:

$.ajaxFileUpload({
	url:'/crm/document.do?method=upLoadDocument&inputId='+inputId,
	secureuri:false,
	fileElementId:'select_document',
	dataType: 'JSON',
	success: function (json, status)
	{
		if(json.indexOf('<pre>') != -1) {
	          json = json.substring(5, json.length-6);
	    }         
	    eval("json=" + json); 
	    
	    if('ok' == json.state){
		    alert('上传成功,你可以在['+json.categoryRemark+']菜单中查看更新!');
	    }else{
	    	alert(json.msg);
	    }
	}
});
 

可结果却是莫名其妙,debug发现没有获取到上传的文件。崩溃,回顾整个流程,应该没问题啊!难道是Spring升级后API变了?在查阅文档后,我确定,问题还在上面代码上。继续无奈!!!

 

终于在逐行核对代码后,我找到了问题的终结。原来是html表单里面input标签没有设置"name"属性值的原因。

我原先写的是:

<input id="select_document" type="file" required="true" />

 其实应该写成:

 

<input id="select_document" name="select_document" type="file" required="true" />
 

我估计是ajaxfileupload插件的问题,一个小小的疏忽,竟然让我纠缠了5、6个钟头,引以为戒啊!

 

 

1
0
分享到:
评论
2 楼 Jackie_GP 2011-10-27  
能提供一个上传的demo吗?下载下来,学习一下。
1 楼 Jackie_GP 2011-10-27  
能给他一个上传的demo吗?

相关推荐

    spring mvc ajax异步文件的上传和普通文件上传

    在Spring MVC框架中,文件上传是一项常见的功能,无论是普通的文件上传还是通过Ajax实现的异步文件上传,都为用户提供了更好的交互体验。本篇将详细讲解这两种方式的实现原理及步骤。 首先,让我们来理解一下普通...

    spring3 mvc 用 jquery ajax 交互

    在IT行业中,Spring MVC和jQuery AJAX是两种广泛使用的技术,它们在构建现代Web应用程序时起着关键作用。本文将深入探讨如何在Spring MVC框架中利用jQuery的AJAX功能进行前后端交互,提升用户体验。 首先,Spring ...

    SpringMvc整合jQuery,ajax单文件/多文件上传

    本教程将详细讲解如何将Spring MVC与jQuery和AJAX结合,实现单个文件和多个文件的上传功能。 首先,我们需要确保项目已经正确地集成了Spring MVC框架。这包括配置Spring的DispatcherServlet、ContextLoaderListener...

    spring与jquery ajax交互 和 servlet与jquery ajax交互

    Spring作为一个全面的Java企业级应用框架,提供了强大的MVC(Model-View-Controller)架构支持,而jQuery则简化了JavaScript的DOM操作和AJAX通信。本文将深入探讨Spring与jQuery AJAX交互以及Servlet与jQuery AJAX...

    spring mvc+ajax 文件上传

    - 一旦文件上传完成,后端可以返回一个JSON响应,包含上传结果的状态和可能的错误信息。前端接收到这个响应后,根据状态提示用户,例如显示上传成功或失败的消息。 4. **安全和优化**: - 为了防止恶意文件上传,...

    疯狂Ajax讲义:Prototype/jQuery+DWR+Spring+Hibernate整合开发(part01)

    第二部分详细介绍了Prototype、jQuery、DWR、AjaxTags等四个最常用的Ajax框架的用法,并针对每个框架提供了一个实用案例。这两个部分是笔者在“疯狂Java实训营”的培训讲义,是《疯狂Ajax讲义:Prototype/jQuery+DWR+...

    springmvc利用jquery实现ajax的例子

    在本示例中,我们将探讨如何使用Spring MVC框架与jQuery库结合实现Ajax功能。Spring MVC是Spring框架的一部分,专门用于构建Web应用程序,而jQuery则是一个强大的JavaScript库,简化了DOM操作、事件处理以及异步HTTP...

    Jquery-spring demo

    首先,我们来看标题“Jquery-spring demo”,这表明这是一个演示项目,旨在展示如何将jQuery与Spring进行整合。在这样的项目中,通常会有一个简单的前后端交互场景,例如数据的获取、提交和更新,来展示这两个技术...

    spring jquery ajax登录

    总结,通过结合Spring MVC和jQuery的AJAX,我们可以构建出一个动态、响应式的登录系统,同时利用Spring的文件上传功能可以扩展到更丰富的用户交互场景。在实际项目中,还需要考虑安全性、错误处理和用户体验等方面的...

    Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统

    在本项目中,"Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统",我们看到一个基于Java技术栈的Web应用开发实例。这个系统利用了多个核心技术来构建一个功能完备的员工管理...

    jquery和json结合实现ajax

    本教程将详细讲解如何利用jQuery和JSON实现AJAX功能,以创建一个自动下拉框效果,具体到在Eclipse开发环境下进行实践。 首先,jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理和Ajax交互等复杂任务。...

    ajaxupload在spring mvc4.2中实现简单文件上传

    在Spring MVC 4.2框架中实现AjaxUpload(异步文件上传)是一个常见的需求,它允许用户在不刷新整个页面的情况下进行文件上传,提供更好的用户体验。以下是对这一主题的详细阐述: 1. **AjaxUpload简介**: Ajax...

    spring框架项目+jQueryAjax提交实例。jquery-3.3.1.min.js

    标题中的"spring框架项目+jQueryAjax提交实例"指的是一个整合了Spring框架和jQuery AJAX技术的Web应用程序项目。这个项目提供了一个完整的流程,演示了如何在前端使用jQuery的AJAX功能向后端Spring MVC控制器发送...

    jquery-java-ajax-uploadify上传文件

    在IT行业中,前端开发经常会遇到文件上传的需求,而"jquery-java-ajax-uploadify上传文件"是一个经典的方法,结合了JavaScript库jQuery、Ajax技术以及Uploadify插件来实现这一功能。在这个过程中,我们将深入探讨...

    Spring+Ajaxfrom上传图片

    后端的Spring Controller需要配置一个处理POST请求的处理方法,该方法通常会使用`@RequestParam`注解来接收上传的文件。Spring提供了一个`MultipartFile`接口,用于处理multipart/form-data类型的请求,这是上传文件...

    SpringMvc整合ajax,jQuery单文件/多文件上传

    通过以上步骤,我们可以实现一个完整的文件上传功能,包括单文件和多文件选择,以及使用Ajax和jQuery提供的反馈机制来提升用户体验。同时,利用Spring MVC的强大功能处理文件上传请求,确保服务端的安全和高效。在...

    spring mvc上传文件

    在本文中,我们将深入探讨如何使用Spring MVC框架与Ajax技术...通过这些步骤,你可以实现一个简单的Spring MVC和Ajax文件上传功能。随着对Spring MVC和Ajax理解的深入,你可以根据实际需求进行更复杂的功能定制和优化。

    spring-mvc-jquery.zip_jquery_mvc jquery_spring jquery_spring mvc

    本项目“spring-mvc-jquery.zip”是关于如何将Spring MVC 3.0框架与jQuery进行整合的一个示例,旨在帮助开发者理解这两者如何协同工作,提升Web应用的用户体验和后端数据处理效率。 首先,Spring MVC是Spring框架的...

    spring jquery实现进度条

    通过以上步骤,我们可以实现一个功能完善的Spring+jQuery文件上传带进度条的功能。这不仅提高了用户体验,也让后台处理文件上传的过程更加透明。在实际项目中,还可以根据需求进行扩展,例如添加取消上传、多文件...

    struts2+spring+hibernat Jquery ajax simple tree 动态生成树实例

    总结来说,"Struts2+Spring+Hibernate Jquery ajax simple tree 动态生成树实例"是一个综合运用Java后端框架和前端技术实现动态交互功能的案例。它展示了如何在后端利用SSH整合处理业务逻辑和数据,再通过Ajax和...

Global site tag (gtag.js) - Google Analytics