jQuery没有提供ajax的文件上传,我们可以通过ajaxfileupload实现ajax文件的上传。其实ajaxfileupload文件上传特别的简单。下面就演示一下在SpringMVC中实现ajax的文件上传。

1、后台接收代码

首先在spring的配置文件中添加文件上传配置

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

再写文件接收的代码

package org.andy.controller;import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.commons.CommonsMultipartFile;@Controller
@RequestMapping("/upload")
public class UploadController {private static final Logger LOG = Logger.getLogger(UploadController.class);private static final HashMap<String, String> TypeMap = new HashMap<String, String>();static {TypeMap.put("image", "gif,jpg,jpeg,png,bmp");TypeMap.put("flash", "swf,flv");TypeMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");TypeMap.put("file", "doc,docx,xls,xlsx,ppt,pptx,htm,html,txt,dwg,pdf");}/*** 文件上传 之 图片上传* * @param file* @param request* @return message: -1 没有文件上传 0 上传成功 1 上传失败 2 文件超过上传大小 3 文件格式错误 4 上传文件路径非法 5 上传目录没有写权限*       * */@RequestMapping(value = "/imageUpload", method = RequestMethod.POST)public void imageUpload(@RequestParam("file") CommonsMultipartFile file,@RequestParam(required = false) String filePre, HttpServletRequest request, HttpServletResponse response) {LOG.info("file name is :" + file.getOriginalFilename());if (!file.isEmpty()) {ServletContext servletContext = request.getSession().getServletContext();String uploadPath = servletContext.getRealPath("/")+ "uploadImage/";// 文件上传大小long fileSize = 3 * 1024 * 1024;if (file.getSize() > fileSize) {backInfo(response, false, 2, "");return;}String OriginalFilename = file.getOriginalFilename();String fileSuffix = OriginalFilename.substring(OriginalFilename.lastIndexOf(".") + 1).toLowerCase();if (!Arrays.asList(TypeMap.get("image").split(",")).contains(fileSuffix)) {backInfo(response, false, 3, "");return;}if (!ServletFileUpload.isMultipartContent(request)) {backInfo(response, false, -1, "");return;}// 检查上传文件的目录File uploadDir = new File(uploadPath);if (!uploadDir.isDirectory()) {if (!uploadDir.mkdir()) {backInfo(response, false, 4, "");return;}}// 是否有上传的权限if (!uploadDir.canWrite()) {backInfo(response, false, 5, "");return;}//新文件名String newname = "";if(null != filePre){newname += filePre;//对应模块上传的文件名前缀}newname += DateFormater.format(new Date(),DateFormater.DATETIME_PATTERN) + "." + fileSuffix;File saveFile = new File(uploadPath, newname);try {file.transferTo(saveFile);backInfo(response, true, 0, newname);} catch (Exception e) {LOG.error(e.getMessage(), e);backInfo(response, false, 1, "");return;}} else {backInfo(response, false, -1, "");return;}}// 返回信息private void backInfo(HttpServletResponse response, boolean flag, int message,String fileName) {String json  = "";if (flag) {json = "{ \"status\": \"success"; } else {json = "{ \"status\": \"error"; }json += "\",\"fileName\": \"" + fileName + "\",\"message\": \"" + message + "\"}";try {response.setContentType("text/html;charset=utf-8");response.getWriter().write(json);} catch (IOException e) {LOG.error(e.getMessage(), e);}}}

2、前台接受代码

使用ajaxfileupload时,首先下载ajaxfileupload文件,导入对应的js文件

      <script type="text/javascript" src="js/ajaxfileupload.js"></script>

文件传输字段必须为file类型,如下:

       <input type="file" id="file" name="file" οnchange="ajaxFileUpload();"/>

其次,处理上传文件:

            //ajax 实现文件上传 function ajaxFileUpload() {$.ajaxFileUpload({url : "upload/imageUpload.shtml",secureuri : false,data : {filePre : "feedback",p : new Date()},fileElementId : "file",dataType : "json",success : function(data) {if (data.status == "success") {//上传成功}switch(data.message){//解析上传状态case "0" : //上传成功break;case "-1" : //上传文件不能为空break;default: //上传失败break;}},error : function(data) {//上传失败}});}

本文出处: http://blog.csdn.net/fengshizty

其实很简单。

SpringMVC结合ajaxfileupload文件无刷新上传相关推荐

  1. java上传刷新_用ajaxfileupload实现无刷新上传的代码示例

    本篇文章主要介绍了SpringMVC结合ajaxfileupload实现文件无刷新上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. jQuery没有提供ajax的文件上传,我们可以通过ajax ...

  2. form表单刷新_《大胖 ? 小课》- 不用 js 实现文件无刷新上传

    这是<大胖小课>栏目的专题一<说说文件上传那些事儿>的第3节-<不用 js 实现文件无刷新上传> 专题已经更新章节: <大胖 • 小课>- 我是这样理解 ...

  3. 文件无刷新上传(swfUpload与uploadify)

    文件无刷新上传并获取保存到服务器端的路径 遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现 ...

  4. ajax上传文件表单,图片、文件无刷新上传,jquery.form.js的使用

    我们在进行一些web开发时,有时会需要上传文件,图片等等的功能.这篇文章记录一下我实现用ajax实现无刷新上传图片的方法. 我们先要了解一下ajax,在前后端分离的开发环境中ajax被广泛的用原来前后 ...

  5. java无刷新上传图片_【java实现web文件无刷新上传】

    最近在做如何实现文件上传的相关工作,查阅了很多资料,发现网上写的都不是很直观,且调试复杂,经实验成功. 把form的target设为页面里一个看不见的iframe,这样上传时候就不会刷新页面了,比如 ...

  6. ajax页面无刷新上传文件

    最近在研究struts2文件上传,感觉这块无论是做企业网站还是做系统都用的挺多的,尤其是图片上传.但是上传我们又有几种方式,一种是表单提交,一种是ajax无刷新上传. 这次我要介绍的就是struts2 ...

  7. jQuery+php+ajax实现无刷新上传文件功能

    2019独角兽企业重金招聘Python工程师标准>>> jQuery+php+ajax实现无刷新上传文件功能,还带有上传进度条动画效果,支持图片.视频等大文件上传. js代码: &l ...

  8. 利用iframe无刷新上传文件的坑

    利用iframe无刷新上传文件的坑 原文:利用iframe无刷新上传文件的坑 页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用for ...

  9. Sring3MVC页面无刷新上传文件

    Sring3MVC页面无刷新上传文件 首先,这个框架是利用Ajax与Ctroller进行表单提交和数据交互的,但是Ajax是无法支持File上传的,所以在这里我使用了隐藏的Iframe来做文件上传的数 ...

  10. php 无刷新上传,php 无刷新上传文件的代码

    php 无刷新上传文件. 有兴趣的朋友,可以参考下:php iframe无刷新上传文件的实现代码 . 1.上传页面 复制代码 代码示例: 无刷新上传文件 function startUpload() ...

最新文章

  1. 深入研究asp.net2.0——控件类库
  2. WIN7无法记住远程登录密码
  3. 圆形卡尺测量后创建模板
  4. 查找前端依赖 jquery css js 时间控件 不要用远程依赖 会变化的 card
  5. WIFI无线路由器的五种工作模式
  6. python另存为excel_在Python中将Excel另存为HTML
  7. spark sql 数据类型转换_spark dataframe 类型转换
  8. 1. 搭建scapy
  9. pptx库ppt演示 python_Python自动化操作PPT看这一篇就够了
  10. jQuery中$.get()、$.post()和$.ajax()
  11. 洛谷P2023 [AHOI2009]维护序列
  12. long 雪花算法_Snowflake 雪花算法
  13. lsqcurvefit拟合结果为复数_高考数学专题突破,向量运算与复数运算、算法、推理与证明,方法规律总结,知识归纳,易错示警...
  14. consul 服务发现 集群 docker 版
  15. linux go missing git command,go: missing Git command的解决办法
  16. 计算机打印机能不能取消正在,打印机怎么取消正在排队打印的任务? 打印机删除打印任务的教程...
  17. CSS媒体查询(@media)全面解析
  18. 男は失恋夜盗11台奔スポーツカーエンブレム腹いせ(写真)
  19. 首届大连国际樱花节将启幕
  20. 淘宝告自媒体人冯东阳一事有结果了

热门文章

  1. linux编程基础系统,Linux编程基础
  2. mos管结电容等效模型_【详解各元器件等效电路】电阻、电容、电感、二极管、MOS管!...
  3. 630. 课程表 III
  4. 173.二叉搜索树迭代器
  5. python 安装impala包
  6. matlab利用工作区的变量画图,在使用MATLAB“绘图”选项卡中的命令按钮绘图之前,需要( )。 答案:在工作区中选择绘图变量...
  7. 保密检查usb痕迹清除_MD型卧式多级泵泵轴抱死故障原因分析和检查维修处理
  8. 《自然语言处理技术在中文全文检索中的应用》笔记
  9. 437.路径总和III (力扣leetcode) 博主可答疑该问题
  10. 241.为运算表达式设计优先级(力扣leetcode) 博主可答疑该问题