当前位置:首页 » 文件管理 » html5进度条上传

html5进度条上传

发布时间: 2022-09-03 09:56:11

⑴ 如何在手机浏览器中运用HTML5的文件API实现上传多图功能

Html5终于解决了上传文件的同时显示文件上传进度的老问题。现在大部分的网站用Flash去实现这一功能,还有一些网站继续采用Html <form>with enctype=multipart/form-data,但是需要修改服务器端可用才能显示给用户文件上传的进度。本质上你需要做的工作是在服务器端接收一个文件时,你发送给它一个字节流,所以你需要知道你已经接收到多少字节并以某种方式传达这些信息给客户端浏览器,在这个过程一直在不断的进行文件的上传。这种方式运行的非常好,不像Flash上传那这样充满了问题(特别是处理大文件上传的时候),然而这种方法是相当复杂的并且听起来不容易理解,因为你本质上是接管了整个服务器端的处理(获取字节流的时候)同时包括了在服务器端实现multipart/form-data协议,伴随一系列的其他事情。
使用Html5 上传文件
XMLHttpRequest 在Html5 规范中已经有全新的变化,规定了XMLHttpRequest Level 2规范(目前最新版本)包含下列新的特性:
处理字节流,例如作为上传或者下载的File,Blob,FormData对象
上传或者下载中的进度事件
跨站点请求
允许创建匿名请求
可以设置请求超时
在这篇文章中我们将能够更清楚的看到#1和#2两个特性。通常,上传文件用XMLHttpRequest并且提供上传进度信息给最终的用户,需要注意的是这种方式解决了不需要服务器端做任何改变,至少是目前处理multipart/form-data协议。所以服务器端的处理逻辑保留不变,这使得开发者适应这种技术相当容易。
图1:文件上传画面-准备上传 图2:显示上传完成画面
注意:上面的图片中,信息提示区域是提供给用户的:
当前选中文件的信息
文件名
文件大小
文件类型
上传完成多少的百分比进度条
上传速度或者上传带宽
距离上传完成大概还有多长时间
已上传文件大小
服务器端的响应
上面第6项或许看起来不重要,但事实上是相当重要的。因为我们用XMLHttpRequest,上传发生在后台,页面没有发生跳转等任何变化,所以对于你用它处理其他一些事情来说是一个非常好的特性。
Html5 Progress Event
对于Html5 Progress Events规范,Html5 Progess Events提供了下列与本次讨论相关的信息
total - 总的字节数
loaded - 到目前为止上传的字节数
lengthComputable - 可计算的已上传字节
请注意到我们需要用两个信息去计算要显示给用户的其他所有信息。要计算出来其他的信息通过上面我们得到信息是相当容易的,但是那需要一些额外的代码并且创建一个定时器。
Html5 Progress Event 应该是什么
考虑到有一部分人想更好的提供给用户所有的信息,所以Html5 Progress Event应该更好的满足需要,因为它给浏览器供应商提供这些额外信息是相当简单的,所以建议progress event应该修改成如下:
total - 总的字节数
loaded - 到目前为止上传的字节数
lengthComputable - 可计算的已上传字节
transferSpeed long类型
timeRemaining javaScript 日期对象
Html5 上传 用XMLHttpRequest
浏览器支持情况
支持这一特性的浏览器最低版本
Firefox 4.0 beta 6
Chrome 6
Safari 5.02
IE 9 Beta and Opera 10.62 不支持这一特性
简单的示例
下面是一个完整的Html页面包含了实现文件上传并带有进度提示的JavaScript代码,只是实现了基本的功能,感兴趣的可以自己做扩展。 需要吧上传接口修改成自己服务的。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

<!DOCTYPE html>
<html>
<head>
<title>Upload Files using XMLHttpRequest - Minimal</title>
<script type="text/javascript">
function fileSelected() {
var file = document.getElementById('fileToUpload').files[0];
if (file) {
var fileSize = 0;
if (file.size > 1024 * 1024)
fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
else
fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
}
}
function uploadFile() {
var fd = new FormData();
fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.addEventListener("load", uploadComplete, false);
xhr.addEventListener("error", uploadFailed, false);
xhr.addEventListener("abort", uploadCanceled, false);
xhr.open("POST", "upload.do");//修改成自己的接口
xhr.send(fd);
}
function uploadProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
}
else {
document.getElementById('progressNumber').innerHTML = 'unable to compute';
}
}
function uploadComplete(evt) {
/* 服务器端返回响应时候触发event事件*/
alert(evt.target.responseText);
}
function uploadFailed(evt) {
alert("There was an error attempting to upload the file.");
}
function uploadCanceled(evt) {
alert("The upload has been canceled by the user or the browser dropped the connection.");
}
</script>
</head>
<body>
<form id="form1" enctype="multipart/form-data" method="post" action="Upload.aspx">
<div class="row">
<label for="fileToUpload">Select a File to Upload</label><br />
<input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
</div>
<div id="fileName"></div>
<div id="fileSize"></div>
<div id="fileType"></div>
<div class="row">
<input type="button" onclick="uploadFile()" value="Upload" />
</div>
<div id="progressNumber"></div>
</form>
</body>
</html>

⑵ 如何通过js HTML5上传示例代码

HTML5版本,只要支持HTML5的浏览器都可以正常使用,并对触摸屏(手机,平板)进行了优化
IE9+ Firefox Chrome Opera
Safari IPhone4 iPad2 Android 2.1CFUpdate HTML5版本,只要支持HTML5的浏览器都可以正常使用,并对触摸屏(手机,平板)进行了优化
IE9+ Firefox
Chrome Opera Safari IPhone4 iPad2 Android 2.1

⑶ 如何用js+html+server端代码实现上传文件并带进度条

直接使用一个上传组件就行了,没必要自己实现的。
建议使用网络提供的webuploader文件上传插件可以轻松实现你的需求

⑷ 前端上传文件实时显示进度条和上传速度的工作原理是怎样的

后端的责任。

⑸ 谁懂如何写html5带有进度条的图片上传的代码吗

可以自己用div画一个啊,父子div,父div宽度固定,子div随着进度宽度动态改变。子div设置背景颜色
--itjob

⑹ html5怎么控制进度条

<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<title>Inserttitlehere</title>
</head>
<style>
.jdtbox{
padding:10px0;
}

.jdt_dbg{
background:#fce5e5;
width:196px;
height:18px;
border-radius:10px;
-webkit-border-radius:10px;
overflow:hidden;
border-top:1pxsolid#f9d1d1;
}

.jdt_mbg{
background:#f12938;
height:18px;
width:75%;
height:20px;
}
</style>
<scripttype="text/javascript">
$(function(){
$(".jdt_mbg").animate({
width:"50%",
},1000);
});
</script>
<body>
<formaction="http://192.168.1.106:8080/app/img/multiUpload"method="post"enctype="multipart/form-data"name="upload_form">
<label>选择图片文件</label>
<inputname="imgFile"type="file"multiple="multiple"accept="image/gif,image/jpeg"/>
<inputname="upload"type="submit"value="上传"/>
</form>
<divclass="jdtbox">
<divclass="jdt_dbg">
<divclass="jdt_mbg"style="width:${investDetail.percent*100"></div>
</div>
</div>
</body>
</html>

⑺ 如何用html5在网页上设置进度条

首先,我们制作的这个进度条并没有后台数据作为支撑,所以是一个靠js实现的一个简单的页面。

我们首先需要新建一个html5的页面,其使用的progress元素实在html5时代才出现的。

我们在新建的页面中,输入一个段落标签,一个进度条,一个button按钮。

然后,我们需要设置一下进度条显示的进度。value代表从多少开始,max代表到多少结束。我们做的是百分比形式的,应该写成这样的。

这些做好之后,我们需要书写两个小的事件,实现原理大体上是鼠标单击下载按钮,开始下载变为正在下载百分之多少,等到达到我们预设的时间后显示下载完成。

我们之前已经给p标签和progress标签分别赋予了不同的id,我们需要获取到这两个元素,并将他们赋给两个变量。

我们还要将progress的初始值设为0,当鼠标单击的时候,我们以一定的时间为周期调用写好的事件。

函数写好之后,我们在浏览器中调试,点击下载按钮之后会在300ms内完成下载时间。

⑻ jsp 在html5中实现 断点续传 进度条 要完成的案例,包括 jsp servlet

可以把进度信息放在cookie里,下次打开浏览器,到上传页面以后,从cookie中上次的读取进度信息,上传时,读取上传文件到上次进度位置,继续上传

⑼ html5文件上传实现进度条需要后端吗

不需要后端的,前端自己判断,代码如下:
function uploadFile(){

// 获取上传文件,放到 formData对象里面
var pic = $("#myhead").get(0).files[0];
var formData = new FormData();
formData.append("file" , pic);
$.ajax({
type: "POST",
url: "upload",
data: formData ,//这里上传的数据使用了formData 对象
processData : false,
//必须false才会自动加上正确的Content-Type
contentType : false ,

//这里我们先拿到jQuery产生的 XMLHttpRequest对象,为其增加 progress 事件绑定,然后再返回交给ajax使用
xhr: function(){
var xhr = $.ajaxSettings.xhr();
if(onprogress && xhr.upload) {
xhr.upload.addEventListener("progress" , onprogress, false);
return xhr;
}
}
});

热点内容
如何手机隐藏wifi密码 发布:2024-10-12 11:12:16 浏览:533
Android70精简 发布:2024-10-12 11:12:10 浏览:748
服务器怎么处理数据 发布:2024-10-12 11:02:57 浏览:549
求平方根的算法 发布:2024-10-12 10:58:36 浏览:440
sqlserverin字符串 发布:2024-10-12 10:57:33 浏览:516
手机高耗电怎么关闭安卓 发布:2024-10-12 10:53:38 浏览:637
sql语句多条件查询 发布:2024-10-12 10:40:02 浏览:193
编译原理视频教程推荐 发布:2024-10-12 10:26:33 浏览:524
我的世界神奇宝贝服务器怎么穿墙 发布:2024-10-12 10:06:08 浏览:252
phpsession数组 发布:2024-10-12 10:02:25 浏览:106