分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

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

发布时间:2023-09-06 01:39责任编辑:顾先生关键词:jQuery

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

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(){

      
    })
  }

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

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved