Ajax实现异步上传图片
要求:点击页面浏览按钮后,选择需要上传的图片,页面无刷新,将上传的图片展示出来
开发流程
一:在页面编写表单代码和js代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
<title>Ajax异步上传图片</title>
<-- 引入jQuery异步上传js文件 -->
<script src="/resource/jquery.form.js" type="text/javascript"></script>
<!-- Ajax异步上传图片 -->
<script type="text/javascript">
function uploadPic() {
// 上传设置
var options = {
// 规定把请求发送到那个URL
url: "/upload/uploadPic.do",
// 请求方式
type: "post",
// 服务器响应的数据类型
dataType: "json",
// 请求成功时执行的回调函数
success: function(data, status, xhr) {
// 图片显示地址
$("#allUrl").attr("src", data.path);
}
};
$("#jvForm").ajaxSubmit(options);
}
</script>
</head>
<body>
<form id="jvForm" action="o_save.shtml" method="post" enctype="multipart/form-data">
<table>
<tbody>
<tr>
<td width="20%">
<span>*</span>
上传图片(90x150尺寸):</td>
<td width="80%">
注:该尺寸图片必须为90x150。
</td>
</tr>
<tr>
<td width="20%"></td>
<td width="80%">
<img width="100" height="100" id="allUrl"/>
<!-- 在选择图片的时候添加事件,触发Ajax异步上传 -->
<input name="pic" type="file" onchange="uploadPic()"/>
</td>
</tr>
- </tbody>
- </table>
- </form>
- </body>
- </html>
实现步骤:
1.编写form表单input类型为file
2.为页面保存按钮添加onchange事件
3.编写js代码,使用jQuery提交form表单(jQuery.form.js文件,可以自动模拟出一个form表单),请求路径
4.页面编写暂时到这里
二:在后台实现图片的上传
这里使用的是springmvc(注解开发)图片上传
- package com.wanghang.upload;
- import java.io.IOException;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.json.JSONObject;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.multipart.MultipartFile;
- /**
- * Ajax异步上传图片
- *
- * @author Hang.W
- * @version 1.0, 2017-02-14 00:51:39
- */
- @Controller
- public class UploadController {
- /**
- * 使用Ajax异步上传图片
- *
- * @param pic 封装图片对象
- * @param request
- * @param response
- * @throws IOException
- * @throws IllegalStateException
- */
- @RequestMapping("/upload/uploadPic.do")
- public void uploadPic(MultipartFile pic, HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException {
- try {
- // 获取图片原始文件名
- String originalFilename = pic.getOriginalFilename();
- System.out.println(originalFilename);
- // 文件名使用当前时间
- String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
- // 获取上传图片的扩展名(jpg/png/...)
- String extension = FilenameUtils.getExtension(originalFilename);
- // 图片上传的相对路径(因为相对路径放到页面上就可以显示图片)
- String path = "/upload/" + name + "." + extension;
- // 图片上传的绝对路径
- String url = request.getSession().getServletContext().getRealPath("") + path;
- File dir = new File(url);
- if(!dir.exists()) {
- dir.mkdirs();
- }
- // 上传图片
- pic.transferTo(new File(url));
- // 将相对路径写回(json格式)
- JSONObject jsonObject = new JSONObject();
- // 将图片上传到本地
- jsonObject.put("path", path);
- // 设置响应数据的类型json
- response.setContentType("application/json; charset=utf-8");
- // 写回
- response.getWriter().write(jsonObject.toString());
- } catch (Exception e) {
- throw new RuntimeException("服务器繁忙,上传图片失败");
- }
- }
- }
图片上传
1.springmvc进行参数绑定,但默认是不支持图片上传的,可以在springmvc的配置文件中进行文件上传的配置
2.设置pic形参,接收页面传递的参数
3.普通文件上传代码
4.将图片以json格式写回页面
5.图片上传部分完成
页面图片展示
1.使用jQuery动态获取到<img>标签的id
2.将获取到的json数据赋值到<img>标签的src属性
3.赋值完后,就完成了图片页面无刷新显示
来源:http://blog.csdn.net/java__project/article/details/55062816
Ajax实现异步上传图片的更多相关文章
- asp.net MVC Ajax.BeginForm 异步上传图片的问题
当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或 Request.Files[0] 都不会取到文件流. 这就是我要说的,当使用Ajax.Be ...
- 异常-----springmvc + ajaxfileupload解决ajax不能异步上传图片的问题。java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.
说明这个问题产生的原因主要是form表单上传图片的时候必须是Content-Type:"multipart/form-data,这种格式的,但是ajax在页面不刷新的情况下去加载的时候只会把 ...
- Ajax简单异步上传图片并回显
前台代码 上传图片按钮 <a href="javascript:void(0)" onclick="uploadPhoto()">选择图片</ ...
- [Ajax] 使用Ajax异步上传图片文件(非Form表单提交)
通过表单Form提交来上传文件的方式这里就不说了: 下面介绍,通过js中使用ajax异步上传图片文件: 新建一个html页面和一个一般处理程序即可: 涉及思路: //发送2次Ajax请求完成js异步上 ...
- 使用Ajax异步上传图片的方法(html,javascript,php)
前两天项目中需要用到异步上传图片和显示上传进度的功能,于是找了很多外国的文章,翻山越岭地去遇上各种坑,这里写篇文章记录一下. HTML <form id="fileupload-for ...
- ajax异步上传图片&SpringMVC后台代码
function uploadPic(){ var options = { url : "/upload/updatePic.action", type : "post& ...
- Jquery实现异步上传图片
利用jQuery的ajax函数就可以实现异步上传图片了.一开始我是想在处理程序中,直接用context.Request.Files来获取页面中的input file,但是不知道为什么一次获取不了.网上 ...
- php结合jquery异步上传图片(ajaxSubmit)
php结合jquery异步上传图片(ajaxSubmit),以下为提交页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
随机推荐
- Microsoft.VisualStudio.DebuggerVisualizers.dll 文件位置 for VisualStudio 2015
可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers) "C:\Program Files (x86)\Microsoft Visual St ...
- iOS7重磅推新--不断尝试与重新设计的过程
来源:GBin1.com iOS7重磅推新--不断尝试与重新设计的过程 或许你心里已经有了关于iPhone最新操作系统的评价,可能你喜欢它,也可能不喜欢,事实上大多数设计者不喜欢.设计界似乎一致认为I ...
- python __slot__
class Player(object): def __init__(self,name,age,life): self.name=name self.age=age self.life=life c ...
- iOS mac添加证书 不能修改“System Roots”钥匙串错误
iOS mac添加证书 不能修改“System Roots”钥匙串错误 如图: 解决方式: 打开钥匙串---登录---,直接把证书拖过来 然后,查看--我的证书,里面,找到证书,即可
- 通过LR监控Linux服务器性能
1)设置监控服务器要监控 UNIX 资源,必须配置 rstatd 守护程序.注意,可能已经配置了 rstatd守护程序,因为当计算机收到一个 rstatd 请求时,该计算机上的 inetd 自动激活r ...
- 运用Unity实现AOP拦截器[结合异常记录实例]
本篇文章将通过Unity实现Aop异常记录功能:有关Unity依赖注入可以看前两篇文章: 1:运用Unity实现依赖注入[结合简单三层实例] 2:运用Unity实现依赖注入[有参构造注入] 另早期 ...
- WPF SL 属性生成器
在开发WPF 和SL应用的时候通用会用到MVVM模式,每次写到类属性的时候要不断的写属性更新时通知方法,写多了就嫌烦,就手写了个属性生成工具,在属性更新的时候添加了更新通知方法. 工具中支持自定义类对 ...
- 【转】打造自己的视频会议系统 GGMeeting(附送源码)
原文地址:http://www.cnblogs.com/justnow/p/4487201.html 自从在博客园发布开源即时通信系统GG(QQ高仿版)以来,结识了很多做IM的朋友,然后我和我的伙伴们 ...
- unity3d对象的克隆
对象克隆,需要有一个预制对象. 首先创建一个预制对象,将其命名为earth,并将材质包附着上去,如下图所示: 然后点住“earth”拖入Assets>Prefabs文件夹,此时earth文字变成 ...
- Hive Group By 常见错误
Expression not in GROUP BY key ‘ xxx’ 遇到这么一个需求,输入数据为一个ID对应多个name,要求输出数据为ID是唯一的,name随便取一个就可以. 执行以下hiv ...