Query插件ajaxfileupload上传文件无需创建form表单,这样就可以解决在form嵌套中ajax表单提交出现的问题
页面代码:(需要把ajaxfileupload.js包含进来)
<!-- 引入相关的js文件,相对路径 -->
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/ajaxfileupload.js"></script>
<!-- 执行上传文件操作的函数 -->
<script type="text/javascript">
function uploadFile() {
$.ajaxFileUpload({url:path + "/compoundbatchsearch/upLoadTxtFile.do",
secureuri:false,
fileElementId:"batchSearchFile", //页面中File标记 id的值
dataType:"XML",
success:function (data, status) {
uploadcallback(data);
},
error:function (data, status, e) {
uploadcallback("occurError");
}
});
}
<div id="search_area" style="position: absolute; z-index: auto; ">
<input id="uploadFile" accept="text/html" type="file" name="uploadFile" />
<input type="button" id="upload" value="uploadFile()" />
</div>
服务器端代码:(应用了spring2.5,需要在spring配置文件中定义multipartResolver bean)
@Controller
public class CompoundBatchSearchController {
private static final Logger logger = Logger.getLogger(CompoundBatchSearchController.class);
@Resource(name="compoundBatchSearchService")
private ICompoundBatchSearchService compoundBatchSearchService;
@RequestMapping
public void upLoadTxtFile(HttpServletResponse response, HttpServletRequest request) {
logger.info("upload txt file action...");
// clear session before parese txt file
if (request.getSession().getAttribute(Constants.RESULT_IDS) != null) {
request.getSession().removeAttribute(Constants.RESULT_IDS);
}
try {
// upload file
MultipartHttpServletRequest mhs = (MultipartHttpServletRequest) request;
MultipartFile mf = mhs.getFile("batchSearchFile");
File file = FilePathHelper.uploadFile(mf, Constants.UPLOAD_TXT);
logger.info("upload file success!");
Map<String, List<String>> idsMap = fetchIDsFromFile(file, response);
if (null == idsMap || idsMap.isEmpty()) {
logger.error("cannot read data form file!");
MessageUtils.outputJSONResult("empty", response);
return;
}
logger.info("read upload file success!");
List<String> casNumbers = idsMap.get("CAS");
List<String> mdlNumbers = idsMap.get("MDL");
if (casNumbers != null && !casNumbers.isEmpty() && mdlNumbers != null && !mdlNumbers.isEmpty()) {
logger.error("It contains invalid data in upload file");
MessageUtils.outputJSONResult("dataError", response);
return;
}
if (casNumbers != null && !casNumbers.isEmpty()) {
List<Long> ids = compoundBatchSearchService.getStructureIdsByCasNo(casNumbers);
if (ids != null) {
request.getSession().setAttribute(Constants.RESULT_IDS, ids);
}
}
if (mdlNumbers !=null && !mdlNumbers.isEmpty()) {
List<Long> ids = compoundBatchSearchService.getStructureIdsByMdl(mdlNumbers);
if (ids != null) {
request.getSession().setAttribute(Constants.RESULT_IDS, ids);
}
}
MessageUtils.outputJSONResult("success", response);
} catch (Exception e) {
logger.error(e.getMessage(), e);
MessageUtils.outputJSONResult("occurError", response);
}
}
spring中定义的upload部分:
<!-- upload file -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxInMemorySize">
<value>20480</value>
</property>
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
分享到:
相关推荐
首先,我们要了解AjaxFileUpload是jQuery的一个插件,它通过Ajax技术实现了文件的无刷新上传。AjaxFileUpload的核心在于利用HTML5的FormData对象和XMLHttpRequest Level 2的特性,使得浏览器可以发送二进制数据到...
在本文中,我们将深入探讨如何使用jQuery插件AjaxFileUpload来实现异步(Ajax)文件上传功能。AjaxFileUpload是一个非常实用的工具,它允许用户在不刷新整个页面的情况下上传文件,提供更好的用户体验。 首先,要...
本文将详细介绍如何使用Asp.Net MVC框架与Jquery的ajaxfileupload插件实现一个兼容主流浏览器的文件上传解决方案。 首先,Asp.Net MVC是一个强大的Web应用程序开发框架,它允许开发者构建动态、数据驱动的网站。它...
2. **设置表单**:创建一个包含文件输入元素的表单。通常,我们会将`enctype`属性设置为`multipart/form-data`,因为这是处理文件上传的标准方式。 ```html <form id="fileUploadForm" enctype="multipart/form-...
本文将详细介绍如何使用JQuery的ajaxfileupload插件实现异步文件上传,这在提升用户体验和处理大文件时尤其有用。ajaxfileupload是jQuery的一个扩展,它允许我们在不刷新页面的情况下完成文件的上传操作,使得交互...
总之,基于jQuery和`ajaxfileupload.js`的文件上传控件,结合适当的前端和后端代码,能够创建出高效、用户友好的文件上传体验。通过`OurUpload`提供的资源,开发者可以快速集成这一功能,节省开发时间,同时确保文件...
$.ajaxFileUpload 是一个jQuery插件,它提供了异步文件上传的能力,使得用户无需刷新页面即可完成文件提交,提高了用户体验。 $.ajaxFileUpload 的核心在于使用Ajax技术,它允许在后台与服务器交换数据并更新部分...
要使用`ajaxFileUpload`,首先确保引入了jQuery库和`ajaxFileUpload.js`插件文件。接着,按照以下步骤配置: ```html <!-- HTML部分 --> $(document).ready(function() { $("#uploadFile").ajaxFileUpload({ ...
AjaxFileUpload是一个JavaScript组件,它允许我们实现异步文件上传并提供预览功能,无需刷新页面。这篇文章将深入探讨如何使用AjaxFileUpload进行图片上传和预览。 首先,让我们了解什么是AjaxFileUpload。它是一个...
jQuery不仅本身提供了丰富的API和强大的功能,还拥有大量的第三方插件,这些插件极大地扩展了jQuery的功能范围,使得开发者可以轻松地添加复杂的功能到自己的项目中,如动画、表单验证、文件上传等。下面将详细介绍...
AjaxFileupload基于jQuery库,利用HTML5的FormData对象和XMLHttpRequest Level 2的特性,实现了在后台处理文件上传而无需刷新页面。其核心思想是通过AJAX技术发送文件数据到服务器,接收响应,并通过回调函数处理...
1. **AjaxFileUpload** - 实现异步文件上传,无需刷新页面即可完成文件提交。 2. **jQUploader** - 提供更丰富的上传界面,包括进度条、取消上传等功能。 3. **MultipleFileUpload plugin** - 支持多文件选择上传,...
本篇文章将深入讲解如何利用AjaxFileUpload与Struts2实现多文件上传,并结合jQuery进行前端交互。 首先,我们需要在项目中引入必要的库。Struts2提供了struts2-jquery-plugin,这是一个基于jQuery的插件,包含了...
AjaxFileUpload是基于jQuery的插件,它扩展了AJAX技术,允许用户在后台上传文件,无需刷新整个页面。要使用AjaxFileUpload,首先要在HTML页面中引入jQuery和AjaxFileUpload的JavaScript文件。确保在引入文件时,...
- 文件上传(Fileupload)插件:这类插件允许用户通过界面上传文件,常见的有AjaxFileUpload、jQUploader和MultipleFileUploadplugin等。 - 表单验证(FormValidation)插件:为表单元素提供验证功能,确保用户输入...
在本文中,我们将探讨如何使用jQuery的ajaxfileupload插件实现异步文件上传,并结合Struts2框架进行处理。这个插件提供了一种方便的方法,允许用户在不刷新页面的情况下上传文件,提升用户体验。 首先,要使用...
文件上传通常有两种方式:传统的表单提交(Form)和异步(Ajax)方式。在"form.php"中,文件是通过HTML的`<form>`元素,配合`enctype="multipart/form-data"`属性来实现上传的。用户选择文件后,点击提交按钮,...
- **AjaxFileUpload**: 基于Ajax技术实现的文件上传插件,可以实现无刷新上传。 - **jQUploader**: 一款轻量级的文件上传插件,易于集成,适合快速开发。 - **MultipleFileUpload plugin**: 支持同时上传多个文件...
本教程将详细介绍如何在ASP.NET Web API中结合jQuery的AJAX方法实现文件上传。 首先,我们需要在客户端创建一个HTML表单,用于用户选择要上传的文件。HTML表单通常包含一个`<input type="file">`元素,用户可以通过...