`
jym1340056078
  • 浏览: 2712 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

实时计算上传文件的进度

 
阅读更多

(function(window,document){

    var myUpload = function(option) {

        var file,

            fd = new FormData(),

            xhr = new XMLHttpRequest(),

            loaded, tot, per, uploadUrl,input;

 

        input = document.createElement("input");

        input.setAttribute('id',"myUpload-input");

        input.setAttribute('type',"file");

        input.setAttribute('name',"files");

 

        input.click();

 

        uploadUrl = option.uploadUrl;

        callback = option.callback;

        uploading = option.uploading;

        beforeSend = option.beforeSend;

 

        input.onchange= function(){

            file = input.files[0];

            if(beforeSend instanceof Function){

                if(beforeSend(file) === false){

                    return false;

                }

            }

             

            fd.append("files", file);

 

            xhr.onreadystatechange = function() {

                if (xhr.readyState == 4 && xhr.status == 200) {

                    if(callback instanceof Function){

                        callback(xhr.responseText);

                    }

                }

            }

 

            //侦查当前附件上传情况

            xhr.upload.onprogress = function(evt) {

                loaded = evt.loaded;

                tot = evt.total;

                per = Math.floor(100 * loaded / tot); //已经上传的百分比

                if(uploading instanceof Function){

                    uploading(per);

                }

            };

 

            xhr.open("post", uploadUrl);

            xhr.send(fd);

        }

    };

 

    window.myUpload = myUpload;

})(window,document);

 

//用法

//触发文件上传事件

myUpload({

    //上传文件接收地址

    uploadUrl: "/async/myUpload.php",

    //选择文件后,发送文件前自定义事件

    //file为上传的文件信息,可在此处做文件检测、初始化进度条等动作

    beforeSend: function(file) {

 

    },

    //文件上传完成后回调函数

    //res为文件上传信息

    callback: function(res) {

 

    },

    //返回上传过程中包括上传进度的相关信息

    //详细请看res,可在此加入进度条相关代码

    uploading: function(res) {

 

    }

});

分享到:
评论

相关推荐

    FTPUpload上传文件 进度条显示进度

    在Java编程环境中,FTP(File Transfer Protocol)上传文件并实现进度条显示是一个常见的需求,尤其在用户界面设计中。下面将详细讲解如何使用Java的Swing库创建一个带有进度条的FTP文件上传功能。 首先,我们需要...

    上传文件(图片缩略图上传带进度显示)

    "上传文件(图片缩略图上传带进度显示)"这一主题聚焦于如何在上传过程中提供友好的用户体验,包括实时的进度指示以及预览图片的缩略图功能。下面将详细探讨这一领域的关键知识点。 首先,大文件上传通常涉及到分块...

    ssm实现多文件上传实时更新进度信息

    在这个场景中,我们将探讨如何在SSM项目中实现多文件上传并实时更新上传进度信息。 首先,让我们从文件上传的基本流程开始。在Web应用中,用户通过表单选择多个文件,然后提交到服务器。在SSM框架中,我们通常会...

    多文件上传,并显示每一个的进度

    这个过程如果能实时显示每个文件的上传进度,将极大地提升用户体验。本文将深入探讨如何实现"多文件上传,并显示每一个的进度"这一功能,涉及前端技术和后端处理。 首先,前端部分。这里提到的前端框架有easyUI、...

    Android 通过ftp上传文件获取上传速度及进度

    3. **文件上传**:使用`FTPClient`的`storeFile()`方法上传文件,并在此过程中计算上传速度和进度。首先,打开本地文件: ```java FileInputStream fis = new FileInputStream(localFilePath); ``` 然后,使用`...

    HTML中文件上传与上传进度跟踪的原理分析.pdf

    前端则通过监听HTTP请求的progress事件,根据接收到的已上传字节数与文件总大小计算出当前进度,实时更新UI。有些浏览器还支持FileReader API,允许前端先读取文件的部分内容,预估文件大小,从而更准确地显示进度。...

    android带进度的文件上传

    为了展示进度,我们需要计算已上传文件的百分比。可以通过监听输出流的写入量,与文件总大小进行比较,从而计算出当前进度。以下是一个简单的示例: ```java long totalSize = file.length(); int progress; byte[]...

    spring mvc 上传文件显示进度

    考虑到安全性,应限制上传文件的大小和类型,防止DoS攻击。同时,对于大型文件,可以考虑分块上传,以减轻服务器压力。 通过以上步骤,我们可以在Spring MVC中实现文件上传并显示进度。这个功能可以显著提高用户...

    WebUploader文件图片上传插件带进度条上传图片

    在实际应用中,WebUploader可以通过API接口进行定制化设置,如限制上传文件的类型、大小,甚至自定义上传按钮样式等。开发者可以根据项目需求灵活调整配置,使得文件上传功能更加符合产品设计。 此外,WebUploader...

    android 文件上传含进度条

    "android 文件上传含进度条"这个标题恰好揭示了我们要实现的功能:在Android应用中,既要能上传文件,又要能在上传过程中显示进度条,以提升用户体验。 首先,我们需要理解Android的文件操作机制。Android提供了...

    silverlight 文件上传,文件上传进度,大文件上传,中文注释

    本示例着重探讨的是Silverlight在文件上传方面的功能,特别是大文件上传以及如何显示文件上传进度,同时提供了中文注释以方便理解和学习。 首先,让我们深入了解Silverlight文件上传的基本原理。在Silverlight中,...

    AJAX+JSP实现基于WEB的文件上传的进度控制

    在Web开发中,文件上传是一项常见的功能,但传统的文件上传方式往往无法实时显示上传进度,用户体验较差。AJAX(Asynchronous JavaScript and XML)技术的引入,配合JSP(JavaServer Pages),可以实现在不刷新整个...

    OkHttp 使用 封装 包括上传下载进度显示

    本篇文章将详细介绍如何对OkHttp进行封装,以实现上传和下载过程中进度的实时显示。 一、OkHttp基本概念与优势 OkHttp是由Square公司开发的一款HTTP客户端库,它通过构建请求、连接池、缓存机制以及异步请求处理,...

    jsp上传文件显示上传进度

    本篇文章将深入探讨如何利用jsp和commons-fileupload.jar来实现文件上传过程中显示实时进度。 首先,了解`commons-fileupload.jar`的作用。它是Apache Commons项目的一部分,提供了处理HTTP请求中的多部分数据的...

    Android 文件上传 带上传进度

    使用OkHttp上传文件,我们需要创建一个`RequestBody`,它可以包装我们的文件,并通过`RequestBody.create()`方法定义其类型。同样,我们可以通过重写`RequestBody`的`writeTo()`方法来监听数据写入,从而获取上传...

    Flex 实现文件上传及进度显示

    1. **Flex组件库**:Flex提供了一套丰富的组件库,如`FileReference`类,用于在客户端选择和上传文件。用户可以通过`Button`或其他控件触发文件选择对话框,然后`FileReference`会处理文件选取和上传过程。 2. **...

    ASP.NET MVC批量、分段上传文件并显示上传进度

    5. 监听xhr的`progress`事件,根据已发送的数据量计算并更新上传进度。 **后端部分:ASP.NET MVC控制器** 1. 在ASP.NET MVC中,我们需要创建一个控制器方法来接收这些POST请求。这个方法通常会接受`...

    js实现文件上传进度条

    4. **进度更新与回调**:在文件读取和上传过程中,我们需要实时更新进度条的宽度,这通常通过监听`onprogress`事件或使用`setTimeout`进行定时检查来实现。在每次块上传完成后,根据已上传的块数更新进度条,并通过...

    java大文件上传至ftp服务器带进度条显示的

    可以使用`FTPClient.getResumableEntries()`方法获取当前的上传状态,然后根据已上传的字节数与总字节数计算出进度,并更新进度条。 关键在于同步FTP上传和进度条更新。为了实现同步,可以使用`java.util....

    Netty 文件上传获取进度条

    服务器端接收这些消息,并在接收到文件数据的同时,计算已接收的数据量和上传进度,然后将这些信息通过WebSocket连接推送给客户端。 NIO(Non-blocking I/O)是Java提供的一种I/O模型,它允许在处理多个连接时避免...

Global site tag (gtag.js) - Google Analytics