使用 jQuery FileUpload 插件实现异步上传

首先,先做两个提前准备工作 

1.下载插件

2.向项目导入需要的css样式和js样式

下面,开始实现 使用 jQuery FileUpload 插件实现异步上传

<!- jsp 页面  以添加一个学生为例子 -!>

<%@ 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">
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<base href="<%=basePath %>">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<!- 引入bootstrap样式  和 jQuery FileUpload插件的css样式 -!>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>

<link rel="stylesheet" type="text/css" href="css/jquery.fileupload.css">

</head>
<body>
<h3>添加就业学员</h3>
<div class="container">
  <form action="student/add" style="position: relative;" method="post" enctype="multipart/form-data">
    <div>
      <label for="sName">姓名</label>
      <input style="width:300px;" type="test" name="sName" class="form-control" id="sName" placeholder="Plest witer your Name">
    </div>
    <div>
      <label for="age">年龄</label>
      <input style="width:300px;" type="test" name="age" class="form-control" id="age" placeholder="Plest witer your age">
    </div>
    <div>
      <label for="sSet">性别</label>
      <input type="radio" name="sSet" value="男" checked="checked" />男
      <input type="radio" name="sSet" value="女" />女
    </div>
    <div>
      <select name="county" style="height:38px; width:300px; margin-top: 25px;">
        <option value="-1">县区</option>
        <option value="磁县">磁县</option>
        <option value="临漳">临漳</option>
        <option value="永年县">永年县</option>
        <option value="魏县">魏县</option>
        <option value="大名县">大名县</option>
      </select>
    </div>
    <div>
      <label for="address">详情地址</label>
      <input style="width:300px;" type="test" name="address" class="form-control" id="address" placeholder="Plest witer your address">
    </div>
    <div>
      <select name="classes" style="height:38px; width:300px;margin-top: 25px;">
        <option value="-1">班级</option>
        <option value="T12">T12</option>
        <option value="T13">T13</option>
      </select>
    </div>
    <div>
      <label for="graduate">毕业时间</label>
      <input style="width:300px;" type="test" name="graduate" class="form-control" id="graduate" placeholder="Plest witer your address">
    </div>
    <div >
      <label for="workTime">工作时间</label>
      <input style="width:300px;" type="test" name="workTime" class="form-control" id="workTime" placeholder="Plest witer your address">
    </div>
    <div>
      <label for="pay">福利待遇</label>
      <input style="width:300px;" type="test" name="pay" class="form-control" id="pay" placeholder="Plest witer your address">
    </div>
    <div id="photo" style="position: absolute;right:600px;top:10px;width:150px;text-align: center;">
      <div class="imges" style="position: relative; ">
        <img src="img/NV02.jpg" class="img-responsive">
          <div id="progress" class="progress" style="position: absolute;left:0px;top:0px;height:100%;width:100%;opacity:.5;">
            <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
          </div>
        </div>
      </div>

      <!- 引用插件的样式  修饰上传头像的样式 -!>
      <span class="btn btn-success fileinput-button">
      <i class="glyphicon glyphicon-plus"></i>
      <span>上传头像...</span>
        <input id="fileupload" type="file" name="image" >
      </span>
    </div>

      <!- 用于表单提交 name属性 的隐藏域 -!>
      <input type="hidden" name="img" id="img_hidden">
   </form>
</div>

   <!-引入 jQuery FileUpload插件的js样式   注意,jquery.fileupload.js 依赖于jquery.iframe-transport.js和jquery.ui.widget.js  所以三个js逗得引入-!>
   <script type="text/javascript" src="js/jquery.ui.widget.js"></script>
   <script type="text/javascript" src="js/jquery.iframe-transport.js"></script>
   <script type="text/javascript" src="js/jquery.fileupload.js"></script>
   <script type="text/javascript">
      $(function(){

        <!- 上传调用 fileupload 方法  url:文件的上传路径名称  dataType:上传格式 done:可以理解为上传时需要做什么 progressall:上传时进度条的变化   -!>

        <!- 我这里文件指 ‘学生头像’  -!>

        $("#fileupload").fileupload({

          <!- “student/upload” 指的是  控制器方法( 方法在下面可见 )  返回文件路径 -!>
          url:"student/upload",
          dataType:"json",
          done : function(e,data){

            <!- 经测试,data反回的result属性里面的url 就是文件路径名称,所以用变量获取一下 -!>
            var url = data.result.url;

            <!-设置上传之后  将上传文件替换默认文件  -!>
            $("#photo img").attr("src","img/"+url);

            <!-将文件路径赋给隐藏域,用于表单提交-!>
            $("#img_hidden").val(url);

            <!- 上传之后进度条长度为0% -!>
            $(‘#progress .progress-bar‘).css("width","0%").html("");
          },
          progressall: function (e, data) {

            <!- 固定算法算出进度条 变化的百分比  后面参数10, 表10进制 -!>
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $(‘#progress .progress-bar‘).css(

            <!- 为进度条宽度赋值  将值赋给百分比 -!>
                ‘width‘,
              progress + ‘%‘
              ).html(progress + ‘%‘);
            }
          });
      })

</script>

</body>
</html>

<!- 控制器方法 student/uploa -!>

<!- 注解成一个控制器 -!>
@Controller
@RequestMapping("/student")

public class StudentController {

  <!-- 用注解方式,value指定从页面的提交地址,method指定是用表单的方式提交过来的 -->

  @RequestMapping(value="/upload",method=RequestMethod.POST)

  <!- 注解  @ResponseBody作用是带传递数据,不跳页面   因为返回键值,所以放回值 用Map-!>
  @ResponseBody

  <!--里面的参数  MultipartFile photo指文件上传的参数,与页面file类型的input的name值必须一致,HttpServletRequest request获取请求参数,File不提供request提交 -->
  public Map<String, Object> upload(MultipartFile image,HttpServletRequest request) throws Exception{
    Map<String, Object> map = new HashMap<>();

      <!- 判断,如果上传的文件内容不为空   执行以下操作 -!>
      if (!image.isEmpty()) {

        <!-  保存文件到指定的路径   这里获取的是服务器的绝对路径 -!>
        String path = request.getServletContext().getRealPath("/img");

        <!-把文件放到项目的指定地方 -!>
        File dest = new File(path + File.separator + image.getOriginalFilename());

        image.transferTo(dest);

        <!- 将植传递会页面  键为url  值为文件名称 -!>
        map.put("url", image.getOriginalFilename());
      }
    return map;
  }

}

<!- 另外在扩展一个知识点   提交表单的之后   Ajax支持序列化提交表单 -!>

//拿我这个例子来说明  我要添加一个学生   subFrom 可以是你添加学生的提交按钮调用的一个函数
  function subFrom(){

    <!- #form  指提交表单form定义的id  。serialize指的是调用序列化方法-!>
    var result = $("#form").serialize();

    <!- 发送异步请求  传递参数就是序列化方法定义的变量 result -!>
    $.post("student/add",result,function(){

      
    })
  }

  以上是我的一点总结,希望可以帮助到大家 !

原文地址:https://www.cnblogs.com/huazai1996/p/8350635.html

时间: 2024-10-08 14:16:40

使用 jQuery FileUpload 插件实现异步上传的相关文章

【转】JQuery插件ajaxFileUpload 异步上传文件(PHP版)

前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.先对ajaxFileUpload插件的语法参数进行讲解 原理:ajaxfileu

JQuery插件ajaxFileUpload 异步上传文件(PHP版)

太久没写博客了,真的是太忙了.善于总结,进步才会更快啊.不多说,直接进入主题. 前几天想在手机端做个异步上传图片的功能,平时用的比较多的JQuery图片上传插件是Uploadify这个插件,效果很不错,但是由于手机不支持flash,所以不得不再找一个文件上传插件来用了.后来发现ajaxFileUpload这个插件挺不错,所以就用这个插件来做异步上传文件的效果.网上也有很多对ajaxFileUpload插件的使用的文章,不过我发现没有PHP版,所以这次服务器那边的处理就使用PHP语言来处理. 一.

ThinkPHP+JQuery实现文件的异步上传

前端代码 文件路径:application/index/view/index/index.html <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>ThinkPHP+JQuery实现文件的异步上传</title> </head> <body> <form id="a

jQuery插件-ajaxFileUpload异步上传文件

ajaxFileUpload是前两天学习过程中接触到的一个JQ插件,功能很简单,就是实现异步上传文件的功能. 1.语法介绍 $.ajaxFileUpload([setting]); 参数说明: (1)url——执行上传处理的地址: (2)secureuri——是否启用安全提交,默认为false: (3)fileElementId——需要上传<input type=”file”>控件id属性值: (4)data——自定义参数,即需要额外传递的JSON格式数据: (5)type——请求方式,提交自

JQuery插件ajaxFileUpload 异步上传文件

一.先对ajaxFileUpload插件的语法参数进行讲解 原理:ajaxfileupload是通过监听iframe的onload方法来实现, 当从服务端处理完成后,就触发iframe的onload事件调用其绑定的方法,在绑定的方法中获取iframe中服务器返回的数据体(支持的普通文本,json,xml,script, html) 语法:$.ajaxFileUpload([options]) 参数说明: 1,url  上传处理程序地址,也就是我发送给服务器端所要处理上传的地址. 2,fileEl

使用ajaxfileupload插件实现异步上传并保存图片功能

使用jquery插件ajaxfileupload.js可以实现页面无刷新上传图片文件,后台管理有关图片的上传功能可以利用它,很方便 一.目标效果: 1.前端,页面上传多张图片时,POST到服务器端,页面能立即显示图片效果,并且不刷新页面 2.后台,页面POST过来的图片被重命名并保存到服务器 二.思路: 1.封装一个js函数uploadimg(imgid,fileid,hiddenid),里面调用ajaxfileupload.js的函数$.ajaxFileUpload()将标签input typ

jquery.form.js 实现异步上传

前台: <form id="formSeacrh" action="/ResumeInfo/uploadFile" method="post" enctype="multipart/form-data"> <div class="form-horizontal"> <div class="form-group" style="height:100p

jquery.form.js实现异步上传

前台页面 1 @{ 2 Layout = null; 3 } 4 <!DOCTYPE html> 5 <html> 6 <head> 7 <meta name="viewport" content="width=device-width" /> 8 <script src="~/Scripts/jquery-1.7.2.min.js"></script> 9 <scri

dwz+jquery+fileupload+springmvc实现文件上传 及图片预览

1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarDiskFileItemFactory fac = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(fac);upload.setHeaderEncoding("utf-8"); Html代