要求:点击页面浏览按钮后,选择需要上传的图片,页面无刷新,将上传的图片展示出来

开发流程

一:在页面编写表单代码和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>

  1. </tbody>
  2. </table>
  3. </form>
  4. </body>
  5. </html>

实现步骤:

1.编写form表单input类型为file

2.为页面保存按钮添加onchange事件

3.编写js代码,使用jQuery提交form表单(jQuery.form.js文件,可以自动模拟出一个form表单),请求路径

4.页面编写暂时到这里

二:在后台实现图片的上传

这里使用的是springmvc(注解开发)图片上传

  1. package com.wanghang.upload;
  2. import java.io.IOException;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import org.json.JSONObject;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.multipart.MultipartFile;
  9. /**
  10. * Ajax异步上传图片
  11. *
  12. * @author Hang.W
  13. * @version 1.0, 2017-02-14 00:51:39
  14. */
  15. @Controller
  16. public class UploadController {
  17. /**
  18. * 使用Ajax异步上传图片
  19. *
  20. * @param pic 封装图片对象
  21. * @param request
  22. * @param response
  23. * @throws IOException
  24. * @throws IllegalStateException
  25. */
  26. @RequestMapping("/upload/uploadPic.do")
  27. public void uploadPic(MultipartFile pic, HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException {
  28. try {
  29. // 获取图片原始文件名
  30. String originalFilename = pic.getOriginalFilename();
  31. System.out.println(originalFilename);
  32. // 文件名使用当前时间
  33. String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
  34. // 获取上传图片的扩展名(jpg/png/...)
  35. String extension = FilenameUtils.getExtension(originalFilename);
  36. // 图片上传的相对路径(因为相对路径放到页面上就可以显示图片)
  37. String path = "/upload/" + name + "." + extension;
  38. // 图片上传的绝对路径
  39. String url = request.getSession().getServletContext().getRealPath("") + path;
  40. File dir = new File(url);
  41. if(!dir.exists()) {
  42. dir.mkdirs();
  43. }
  44. // 上传图片
  45. pic.transferTo(new File(url));
  46. // 将相对路径写回(json格式)
  47. JSONObject jsonObject = new JSONObject();
  48. // 将图片上传到本地
  49. jsonObject.put("path", path);
  50. // 设置响应数据的类型json
  51. response.setContentType("application/json; charset=utf-8");
  52. // 写回
  53. response.getWriter().write(jsonObject.toString());
  54. } catch (Exception e) {
  55. throw new RuntimeException("服务器繁忙,上传图片失败");
  56. }
  57. }
  58. }

图片上传

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实现异步上传图片的更多相关文章

  1. asp.net MVC  Ajax.BeginForm 异步上传图片的问题

    当debug到这里,你们就发现不管是 Request.Files["Upload"]亦或 Request.Files[0] 都不会取到文件流. 这就是我要说的,当使用Ajax.Be ...

  2. 异常-----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在页面不刷新的情况下去加载的时候只会把 ...

  3. Ajax简单异步上传图片并回显

    前台代码 上传图片按钮 <a href="javascript:void(0)" onclick="uploadPhoto()">选择图片</ ...

  4. [Ajax] 使用Ajax异步上传图片文件(非Form表单提交)

    通过表单Form提交来上传文件的方式这里就不说了: 下面介绍,通过js中使用ajax异步上传图片文件: 新建一个html页面和一个一般处理程序即可: 涉及思路: //发送2次Ajax请求完成js异步上 ...

  5. 使用Ajax异步上传图片的方法(html,javascript,php)

    前两天项目中需要用到异步上传图片和显示上传进度的功能,于是找了很多外国的文章,翻山越岭地去遇上各种坑,这里写篇文章记录一下. HTML <form id="fileupload-for ...

  6. ajax异步上传图片&SpringMVC后台代码

    function uploadPic(){ var options = { url : "/upload/updatePic.action", type : "post& ...

  7. Jquery实现异步上传图片

    利用jQuery的ajax函数就可以实现异步上传图片了.一开始我是想在处理程序中,直接用context.Request.Files来获取页面中的input file,但是不知道为什么一次获取不了.网上 ...

  8. php结合jquery异步上传图片(ajaxSubmit)

    php结合jquery异步上传图片(ajaxSubmit),以下为提交页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transi ...

  9. 文件的上传(表单上传和ajax文件异步上传)

    项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...

随机推荐

  1. java nb

    Java领域有非常多著名的人物.他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编程的方式. 本文是<最受欢迎的8位Java牛人>的2.0版本号. PS:排名不分先后.本文的 ...

  2. 求x>0时,y=x^3-6x^2+15的极值

    解: 当x→∞时,y也→∞,所以y没有最大值. y=x3-6x2+15=-4*(x/2)*(x/2)*(6-x)+15 而根据几何平均数小于等于算术平均数的定理,(x/2)*(x/2)*(6-x)在x ...

  3. 【树莓派】Box相关手册-4 Web代理

    在盒子上安装配置web代理,通过此代理,用户访问盒子的内网地址实现web portal访问.目前我们使用tinyproxy作为web代理 安装: >sudo apt-get install ti ...

  4. java开发中的一些概念名词

    1. JavaBeans JavaBean是符合某种规范的Java组件,也就是Java类.它必须满足如下规范: 1)必须有一个零参数的默认构造函数 2)必须有get和set方法,类的字段必须通过get ...

  5. 《深入浅出pig系列之中的一个》pig-0.12.0-cdh5.1.2的安装与执行

    这里使用的版本号是cdh发行的pig-0.12.0-cdh5.1.2 下载地址点这里 1.Pig简单介绍: Pig是yahoo捐献给apache的一个项目.它是SQL-like语言.是在MapRedu ...

  6. 算法笔记_162:算法提高 复数归一化(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b) . ...

  7. ant 重置(修改)DatePicker MonthPicker Cascader 的值

    1.清空值 this.props.form.resetFields(); 2.监听 props 的变化,触发 清空按钮 .

  8. 关于苹果开发证书失效的解决方式(2016年2月14日Failed to locate or generate matching signing assets)

    前言: 从2月14日開始,上传程序的同学可能会遇到提示上传失败的提示. 而且打开自己的钥匙串,发现所有的证书所有都显示此证书签发者无效. Failed to locate or generate ma ...

  9. Odoo/OpenERP 日志配置、使用及实现

    当应用处于生产环境时,日志提供了有价值的运行时调试及监控信息,并且,也是一个有用的调试工具对于处于开发阶段的应用来说.此文描述在Odoo8.0中日志的配置.使用及实现 日志配置        Odoo ...

  10. iOS 购物车动画

    代码地址如下:http://www.demodashi.com/demo/11155.html 先看看动画效果: 项目结构: 接下来开始具体实现过程: 一.先计算动画开始结束位置 方法:- (CGPo ...