表单提交方式文件上传和ajax异步文件上传





一:首先是我在spring mvc下的表单提交方式上传

ssm的包配置我就不一一详细列出来了,但是上传的包我还是列出来





这一段我也不知道怎么给大家讲解就是直接贴代码了哈

前端的代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件的上传和下载</title>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"> </script>
<script type="text/javascript" src="js/jquery-form.js"> </script>
<script type="text/javascript">
</script>
</head>
<body>
<form method="POST" enctype="multipart/form-data" class="fill" action="testFileUpload4Files">
<table>
<tr>
<!-- 这里是多个文件上传 -->
<td>添加:</td>
<td><input type="file" name="file" /><br /> <input
type="file" name="file" /><br /> <input type="file" name="file" /><br />
<input type="file" name="file" /><br /></td>
</tr>
<tr>
<td>描述:</td>
<td><input type="text" name="desc" />
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="上传" />
</td>
</tr>
</table>
</form>
</body>
</html>

这里的enctype默认是application/x-www-form-urlencoded当我们设置为multipart/form-data用以支持向服务器发送二进制数据这样我们才能上传。就是这样直接传递到服务器里面去

接下来就是支持多文件传递的服务端的代码

 @RequestMapping("/testFileUpload4Files")
public String addUser(@RequestParam("file") CommonsMultipartFile[] files,
HttpServletRequest request) {
for (int i = 0; i < files.length; i++) {
System.out.println("fileName:" + files[i].getOriginalFilename());
if (!files[i].isEmpty()) {
try {
files[i].transferTo(new File("d:\\temp\\" + files[i].getOriginalFilename()));
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "/success";
}

现在就是直接选择文件提交表单就可以传递数据

二:ajax的异步文件上传



相信多数人都会提交表单方式上传文件但是遇到ajax可能有些没遇到过或者没得demo,我也是今天看了不少demo才知道可以用jquery-form.js这个插件来实现

插件里面我们可以直接调用ajaxForm实现异步上传,里面的种种方法定制上传样式就大家去实现了这里就只实现简单的上传,哈哈直接代码

前端代码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta charset="utf-8">
<title>springmvc上传文件</title>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery-form.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("input[type='submit']").on("click", function() {
$(".fill").ajaxForm({
url : "testFileUpload4Files1", // 请求的url
type : "post", // 请求方式
dataType : "text", // 响应的数据类型
async : true, // 异步
success : function(data) {
alert(data);
},
error : function() {
alert("数据加载失败!");
}
});
});
});
</script>
</head>
<body>
<form method="POST" enctype="multipart/form-data" class="fill">
<table>
<tr>
<td>添加:</td>
<td><input type="file" name="file" /><br /> <input
type="file" name="file" /><br /> <input type="file" name="file" /><br />
<input type="file" name="file" /><br />
</td>
</tr>
<tr>
<td>描述:</td>
<td><input type="text" name="desc" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="上传" /></td>
</tr>
</table>
</body>
</html>

服务端我是返回他的一个文件名表示上传成功

@ResponseBody
@RequestMapping(value="/testFileUpload4Files1",produces = "text/html;charset=UTF-8")
public String ajaxUpload(@RequestParam("file") CommonsMultipartFile[] files,
HttpServletRequest request) {
StringBuffer buffer = new StringBuffer(); for (int i = 0; i < files.length; i++) {
buffer.append(files[i].getOriginalFilename());
System.out.println("fileName:" + files[i].getOriginalFilename());
if (!files[i].isEmpty()) {
try {
files[i].transferTo(new File("d:\\temp\\" + files[i].getOriginalFilename()));
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return buffer.toString();
}

好的写完了  提供大家参考的主要还是源码大家可以直接看源码

spring mvc ajax异步文件的上传和普通文件上传的更多相关文章

  1. 高性能的关键:Spring MVC的异步模式

    我承认有些标题党了,不过话说这样其实也没错,关于“异步”处理的文章已经不少,代码例子也能找到很多,但我还是打算发表这篇我写了好长一段时间,却一直没发表的文章,以一个更简单的视角,把异步模式讲清楚. 什 ...

  2. Spring MVC的异步模式

    高性能的关键:Spring MVC的异步模式   我承认有些标题党了,不过话说这样其实也没错,关于“异步”处理的文章已经不少,代码例子也能找到很多,但我还是打算发表这篇我写了好长一段时间,却一直没发表 ...

  3. Spring MVC的异步模式DefferedResult

    原文:http://www.importnew.com/21051.html 什么是异步模式 要知道什么是异步模式,就先要知道什么是同步模式,先看最典型的同步模式: (图1) 浏览器发起请求,Web服 ...

  4. Spring使用ajax异步上传文件

    单文件上传 <!-- 创建文件选择框 --> 文件上传 :<input type="file" id="file" name="fi ...

  5. Spring MVC+ajax进行信息验证

    本文是一个ajax结合Spring MVC使用的入门,首先我们来了解一下什么是Ajax AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大的优点是在不重新加载整个页面的情况下,可 ...

  6. Spring MVC的异步模式(ResponseBodyEmitter、SseEmitter、StreamingResponseBody) 高级使用篇

    DeferredResult高级使用 上篇博文介绍的它的基本使用,那么本文主要结合一些特殊的使用场景,来介绍下它的高级使用,让能更深刻的理解DeferredResult的强大之处. 它的优点也是非常明 ...

  7. spring mvc对异步请求的处理

    在spring mvc3.2及以上版本增加了对请求的异步处理,是在servlet3的基础上进行封装的. 1.修改web.xml <?xml version="1.0" enc ...

  8. spring mvc ajax 提交复杂数组类型

    The server refused this request because the request entity is in a format not supported by the reque ...

  9. spring mvc ajax请求

    jar包中增加 jackson-annotations-2.5.0.jar jackson-core-2.5.0.jar jackson-databind-2.5.0.jar springmvx.xm ...

随机推荐

  1. Linux日志文件分割

    经常有这样的情况,日志文件或者数据文件会变得很庞大,那么每次对这些目标文件的访问或者修改就会变得极其耗时.因而引发一些性能问题,但是如果对这些目标文件进行分割,限定其大小,那么每次的访问或者修改就会变 ...

  2. MySQL在windows的my-default.ini配置

    my-default.ini分为两块:Client Section和Server Section. Client Section用来配置MySQL客户端参数. 要查看配置参数可以用下面的命令: sho ...

  3. [z]eclipase优化

    eclipse启动优化,终于不那么卡了! 网上找了好多都是myEclipse的优化的,跟eclipse有点区别,找了很多方法还是不能让这个eclipse(Version: Kepler Release ...

  4. php伪静态与重定向

    什么是伪静态 伪静态是相对于真静态来讲的,伪静态只是改变了URL格式,实际还是动态页面,有真静态一样的SEO,真静态访问一个静态页面,服务器(apache,nginx)直接读取磁盘静态文件,伪静态是动 ...

  5. Hadoop(二) HADOOP集群搭建

    一.HADOOP集群搭建 1.集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 Na ...

  6. UIImageView中的UIButton不响应事件解决方案

    如下: CGRect imageRect = (CGRect){, , , }; UIImageView *imageView = [[[UIImageView alloc] initWithFram ...

  7. Unknown type name 'NSString' 解决方案

    今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情况下出现“Unkn ...

  8. BZOJ 1227 [SDOI2009]虔诚的墓主人 - 扫描线

    Solution 离散化 扫描线, 并用 $rest[i]$ 和 $cnt[i]$ 记录 第$i$列 总共有 $cnt[i]$棵常青树, 还有$rest[i]$ 没有被扫描到. 那么 第$i$ 列的方 ...

  9. Android Text Color设置不当造成信息不显示

    Android Text Color设置不当造成信息不显示 Android 的TextView 可以设置颜色,默认我们可以设置成 #000000 ,但某一次设置成了#00000000 ,就是多了两个0 ...

  10. vim自动添加tags、cscope

    每次打开一个工程都需要重新添加tags.cscope,很不方便,网上找了一下. 将其添加到 ~/.vimrc 中之后,打开 vim 就会自动搜索当前路径下的tags.cscope添加进去. 自动添加 ...