(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) {
}
});
相关推荐
在Java编程环境中,FTP(File Transfer Protocol)上传文件并实现进度条显示是一个常见的需求,尤其在用户界面设计中。下面将详细讲解如何使用Java的Swing库创建一个带有进度条的FTP文件上传功能。 首先,我们需要...
"上传文件(图片缩略图上传带进度显示)"这一主题聚焦于如何在上传过程中提供友好的用户体验,包括实时的进度指示以及预览图片的缩略图功能。下面将详细探讨这一领域的关键知识点。 首先,大文件上传通常涉及到分块...
在这个场景中,我们将探讨如何在SSM项目中实现多文件上传并实时更新上传进度信息。 首先,让我们从文件上传的基本流程开始。在Web应用中,用户通过表单选择多个文件,然后提交到服务器。在SSM框架中,我们通常会...
这个过程如果能实时显示每个文件的上传进度,将极大地提升用户体验。本文将深入探讨如何实现"多文件上传,并显示每一个的进度"这一功能,涉及前端技术和后端处理。 首先,前端部分。这里提到的前端框架有easyUI、...
3. **文件上传**:使用`FTPClient`的`storeFile()`方法上传文件,并在此过程中计算上传速度和进度。首先,打开本地文件: ```java FileInputStream fis = new FileInputStream(localFilePath); ``` 然后,使用`...
前端则通过监听HTTP请求的progress事件,根据接收到的已上传字节数与文件总大小计算出当前进度,实时更新UI。有些浏览器还支持FileReader API,允许前端先读取文件的部分内容,预估文件大小,从而更准确地显示进度。...
为了展示进度,我们需要计算已上传文件的百分比。可以通过监听输出流的写入量,与文件总大小进行比较,从而计算出当前进度。以下是一个简单的示例: ```java long totalSize = file.length(); int progress; byte[]...
考虑到安全性,应限制上传文件的大小和类型,防止DoS攻击。同时,对于大型文件,可以考虑分块上传,以减轻服务器压力。 通过以上步骤,我们可以在Spring MVC中实现文件上传并显示进度。这个功能可以显著提高用户...
在实际应用中,WebUploader可以通过API接口进行定制化设置,如限制上传文件的类型、大小,甚至自定义上传按钮样式等。开发者可以根据项目需求灵活调整配置,使得文件上传功能更加符合产品设计。 此外,WebUploader...
"android 文件上传含进度条"这个标题恰好揭示了我们要实现的功能:在Android应用中,既要能上传文件,又要能在上传过程中显示进度条,以提升用户体验。 首先,我们需要理解Android的文件操作机制。Android提供了...
本示例着重探讨的是Silverlight在文件上传方面的功能,特别是大文件上传以及如何显示文件上传进度,同时提供了中文注释以方便理解和学习。 首先,让我们深入了解Silverlight文件上传的基本原理。在Silverlight中,...
在Web开发中,文件上传是一项常见的功能,但传统的文件上传方式往往无法实时显示上传进度,用户体验较差。AJAX(Asynchronous JavaScript and XML)技术的引入,配合JSP(JavaServer Pages),可以实现在不刷新整个...
本篇文章将详细介绍如何对OkHttp进行封装,以实现上传和下载过程中进度的实时显示。 一、OkHttp基本概念与优势 OkHttp是由Square公司开发的一款HTTP客户端库,它通过构建请求、连接池、缓存机制以及异步请求处理,...
本篇文章将深入探讨如何利用jsp和commons-fileupload.jar来实现文件上传过程中显示实时进度。 首先,了解`commons-fileupload.jar`的作用。它是Apache Commons项目的一部分,提供了处理HTTP请求中的多部分数据的...
使用OkHttp上传文件,我们需要创建一个`RequestBody`,它可以包装我们的文件,并通过`RequestBody.create()`方法定义其类型。同样,我们可以通过重写`RequestBody`的`writeTo()`方法来监听数据写入,从而获取上传...
1. **Flex组件库**:Flex提供了一套丰富的组件库,如`FileReference`类,用于在客户端选择和上传文件。用户可以通过`Button`或其他控件触发文件选择对话框,然后`FileReference`会处理文件选取和上传过程。 2. **...
5. 监听xhr的`progress`事件,根据已发送的数据量计算并更新上传进度。 **后端部分:ASP.NET MVC控制器** 1. 在ASP.NET MVC中,我们需要创建一个控制器方法来接收这些POST请求。这个方法通常会接受`...
4. **进度更新与回调**:在文件读取和上传过程中,我们需要实时更新进度条的宽度,这通常通过监听`onprogress`事件或使用`setTimeout`进行定时检查来实现。在每次块上传完成后,根据已上传的块数更新进度条,并通过...
可以使用`FTPClient.getResumableEntries()`方法获取当前的上传状态,然后根据已上传的字节数与总字节数计算出进度,并更新进度条。 关键在于同步FTP上传和进度条更新。为了实现同步,可以使用`java.util....
服务器端接收这些消息,并在接收到文件数据的同时,计算已接收的数据量和上传进度,然后将这些信息通过WebSocket连接推送给客户端。 NIO(Non-blocking I/O)是Java提供的一种I/O模型,它允许在处理多个连接时避免...