项目一、ajax上传数据(显示进度条)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导入数据</title>
    <script type="text/javascript" src="/webapp/javascript/jquery.min.js"></script>
    <script type="text/javascript">
        //加载完成后执行
        $(document).ready(function () {
            //为上传按钮添加点击事件
            $("#btnUpload").click(function () {
                //创建异步请求对象
                var xhr = new XMLHttpRequest();
                //创建form对象
                var formData = new FormData();
                //获取数据类型参数
                var dataType = $("#dataType").val();
                //获取文件名及文件本身
                var fileName = $("#fileUpload").val();  //文件名
                var file = $("#fileUpload").get(0).files[0];    //文件本身
                //判断文件是否为空,若为空,则提示并返回
                if(file == null){
                    alert("请先选择要上传的文件。");
                    return;
                }

                //将文件添加到form表单中
                formData.append("file", $("#fileUpload").get(0).files[0]);
                formData.append("dataType", dataType);
                //问上传添加进度处理函数
                xhr.upload.onprogress = function (event) {
                    //计算上传进度百分比
                    var percentComplete = Math.round(event.loaded * 100 / event.total);
                    //显示百分比效果
                    $("#progressUpload").val(percentComplete).show();
                }
                //添加状态相应处理函数
                xhr.onreadystatechange = function () {
                    //如果响应成功
                    if(xhr.readyState == 4 && xhr.status == 200){
                        //处理响应结果
                        /* $("#progressUpload").fadeOut("slow", function(){
                            //显示结果
                            $("#lblMessage").html(xhr.responseText);
                        }); */
                    }
                }
                //响应成功处理函数
                xhr.onload = function (e) {
                    if(this.readyState == 4 && this.status == 200){
                        //隐藏进度条
                        //处理响应结果
                        $("#progressUpload").fadeOut("slow", function(){
                            //显示结果
                            $("#lblMessage").show().html("上传完成!");
                        });
                    }
                }
                //开始发送数据时
                xhr.onloadstart = function () {
                    $("#progressUpload").hide();
                    $("#lblMessage").hide();
                }
                //超时处理
                xhr.ontimeout = function (e) {
                    $("#message").html("sorry,连接超时了!");
                }
                //错误处理
                xhr.onerror = function (e) {
                    $("#message").html("sorry,连接出错了!");
                }
                //打开连接请求
                xhr.open("POST","test_save",true);
                //发送数据
                xhr.send(formData);
            });
        });
    </script>
</head>
<body>
<fieldset>
    <legend>批量导入数据</legend>
    <!-- 数据表上传 -->
    <select id="dataType" name="dataType">
        <option value="教师信息">教师信息</option>
        <option value="外聘教师" >外聘教师信息</option>
        <option value="课程信息" >课程信息</option>
        <option value="班级信息" >班级信息</option>
        <option value="学生信息" >学生信息</option>
        <option value="results" >成绩信息</option>
        <option value="教学任务" >教学任务</option>
        <option value="专业信息" >专业信息</option>
        <option value="开课计划" >开课计划</option>
    </select>
    <input id="fileUpload" type="file" name="file"/>&nbsp;<input id="btnUpload" type="button" value="上传"/>

    <div id="message">
        <progress id="progressUpload" value="0" max="100" style="display:none;"></progress>
        <label id="lblMessage"></label>
    </div>
</fieldset>
</body>
</html>
时间: 2024-11-20 22:02:19

项目一、ajax上传数据(显示进度条)的相关文章

用Struts2实现文件上传时显示进度条功能

最近在做一个资源共享的项目中,采用了Struts2.1.8+Spring2.5.6+hibernate3.32的框架整合方式进行开发.在文件上传这块,因为需要实现文件上传时显示进度条的功能,所以尝试了一下.怕以后忘记,先贴出来分享下.   要在上传文件时能显示进度条,首先需要实时的获知web服务端接收了多少字节,以及文件总大小,这里我们在页面上使用AJAX技术每一秒向服务器发送一次请求来获得需要的实时上传信息.但是当我们使用struts2后怎么在服务端获得实时的上传大小呢?这里需要用到commo

jQuery上传文件显示进度条

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="../js/jquery.js"></script> </head> <body> <h2>HTML5异步上传文件,带进度条(jQuery)</h2> <form method="post"

Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认"拿来主义",只是我个人更喜欢凡是求个所以然.本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助. 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序(IHttpHandler)和

原生js上传文件 显示进度条

最近在做文件上传的功能,因为界面设计比较简单,就没有引用jq,但是网上大部分的上传插件都需要jq的支持.为了一个上传功能引用90多k的jq文件有点太小题大做了,所以就自己动手写了一个原生js上传的demo.下面是代码: HTML代码 <html> <head> <title></title> </head> <body> <input type="file" id="f" /> &l

ajax上传文件带进度条的思路

首先,需要2个重要的数据,total(文件总大小)和loaded(已经上传的大小),用 loaded/total,然后不断的更新进度条即可: 问:怎么拿到这两个重要数据呢? 答:在html5中有一个上传过程事件onprogress,在这个事件中可以读到这两个数据loaded和total:上传的时候不断的触发这个函数,然后更新进度条即可: 1 xhr.upload.onprogress = function(ev){ 2 if(ev.lengthComputable){ 3 //有可能文件时分块上

异步上传,显示进度条

服务端代码 [HttpPost] public ActionResult DoLoad(HttpPostedFileBase upimage, string test) { string filePhysicalPath = Server.MapPath("~/Upload/" + test); if (System.IO.File.Exists(filePhysicalPath)) { System.IO.Stream uploadStream = upimage.InputStre

【原创】用JAVA实现大文件上传及显示进度信息

用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 一. 大文件上传基础描述: 各种WEB框架中,对于浏览器上传文件的请求,都有自己的处理对象负责对Http MultiPart协议内容进行解析,并供开发人员调用请求的表单内容. 比如: Spring 框架中使用类似CommonsMultipartFile对象处理表二进制文件信息. 而.NET 中使用HtmlInputFile/ HttpPostedFile对象处理二进制文件信息. 优点:使用框架内置对象可以很方便的

说说ajax上传数据和接收数据

我是一个脑袋不太灵光的人,所以遇到问题,厚着脸皮去请教大神的时候,害怕被大神鄙视,但是还是被鄙视了.我说自己不要点脸面,那是不可能的,但是,为了能让自己的技术生涯能走的更长远一些,受点白眼,受点嘲笑也不算什么.重在被各种鄙视之后,我学到了什么,这才是关键的.好吧,我在自我安慰.哈哈,废话不多说啦,说正题. 我一直觉得ajax是个神奇的存在,但是之前我做的都是通过ajax去接收数据,栗如: $.ajax({ type: "get", url: "https://www.baid

asp.net 文件批量选取,批量上传,带进度条,uploadify3.2 TOP

http://www.16aspx.com/Article/3444 asp.net 文件批量选取,批量上传,带进度条,uploadify3.2 TOP,布布扣,bubuko.com

ajax上传文件及进度显示

之前在博文:原生ajax写法就提及过ajax2.0与1.0的差别是多了FormData和利用FormData文件上传(当然还有跨域,但不是本文的重点). 那么具体怎么样实现ajax上传文件呢? 一般来说,浏览器获取文件的方法有拖拽和input_file两种: // 先定义一个放文件的数组 var files = []; //拖拽事件获取文件 div.addEventListener('drop',function(ev){ //因为dataTransfer.files只是类数组,所以要用Arra