大文件上传进度条实现
来源:互联网 发布:java 线程池 队列大小 编辑:程序博客网 时间:2024/06/05 23:03
大文件上传进度条实现
1.FormData对象提交表单
进行表单提交时,如果表单当中的域很多,使用DOM操作就比较麻烦。FormData可以一次性收集表单中的所有数据,包括文件域的数据,操作更方便。
2.调整允许上传文件大小
修改php.ini文件中允许POST表单上传的最大数据量:
修改php.ini文件中允许上传文件的最大大小:
3.onprogress事件
onprogress事件是 XMLHttpRequest的子对象XMLHttpRequestUpload中的一个事件,该事件大约每100ms向客户端返回一次数据,该数据中包含文件已上传大小loaded和总大小total。
xhr.upload.onprogress = function(evt){ console.log(evt); //evt是onprogress事件的对象}
4.进度条实现实例
前台HTML页面:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <!-- 外层div 进度条的整体视觉和位置设置 --> <div style="width:300px;height: 20px;border: 1px solid #CCC"> <!-- 内层div 逐渐递增的进度条 --> <div id="jdt" style="height: 20px"></div> </div><br> <form action="" method="post" id="mainForm"> 选择文件: <input type="file" name="f"> <input type="button" value="上传" onclick="upload()"> </form> <script type="text/javascript"> function upload(){ // 获取表单对象 var fm = document.getElementById("mainForm"); // 实例化FormData对象 var fd = new FormData(fm); // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // console.log(xhr); // 调用open方法准备ajax请求 xhr.open('post','upfile.php'); var jdt = document.getElementById('jdt'); // 绑定onprogress事件 xhr.upload.onprogress = function(evt){ // console.log(evt); // toFixed修正结果,只保留小数点后两位 // 计算上传大小的百分比 percent = (evt.loaded / evt.total).toFixed(2); // 设置进度条样式 jdt.style.width = percent * 300 + 'px'; jdt.style.background = 'skyblue'; } xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ alert(xhr.responseText); } } // 发送ajax请求 xhr.send(fd); } </script></body></html>
后台PHP程序:
<?php if($_FILES['f']['error'] ==0 ){ // echo $_FILES['f']['name']; // 将$_FILES['f']['name']字符串由参数1的字符集,转为参数2的字符集 $name = iconv('utf-8','gb2312',$_FILES['f']['name']); // 如果不进行转换的话,中文会产生乱码。因为我们的程序用的是utf-8,而windows系统用的是gb2312 //参数1: 临时存放路径 //参数2: 永久保存路径 if(move_uploaded_file($_FILES['f']['tmp_name'],$name)){ echo "上传成功"; }else{ echo "上传失败"; }}else{ echo "上传出错";}
阅读全文
0 0
- 大文件上传进度条实现
- PHP 大文件上传进度条实现
- PHP 大文件上传进度条实现
- PHP 大文件上传进度条实现
- PHP 大文件上传进度条实现
- PHP 大文件上传进度条实现
- 大文件带进度条上传
- 实现NeatUpload大文件上传和个性显示进度条
- ajax上传文件进度条实现
- php实现文件上传进度条
- php实现文件上传进度条 .
- php实现文件上传进度条
- SpringMVC实现文件上传进度条
- Servlet实现上传文件进度条
- 实现HttpClient上传文件进度条
- XUtils3实现进度条文件上传
- ajax实现上传文件进度条
- ajax实现文件上传进度条
- ROS机器人操作系统中级教程 2
- 判断语句
- 【BigHereo 19】---T3-《信息系统开发与管理》---系统和信息管理系统
- <C++ Primer_5th>习题_3.14
- 【BigHereo 20】---T4-《信息系统开发与管理》---系统规划
- 大文件上传进度条实现
- 设有n个正整数,将他们连接成一排,组成一个最大的多位整数
- UPDATE更新某些字段
- html实现一些特殊的符号
- React Native和iOS原生方法交互
- C/C++/Qt软件系统统计运行时间方法详解
- ROS机器人操作系统中级教程 3
- js移动客户端--触摸事件 模拟点击、滑屏事件
- Python爬虫的post请求简单实例