JS+html5实现异步上传图片显示上传文件进度条功能示例


Posted in Javascript onNovember 09, 2019

本文实例讲述了JS+html5实现异步上传图片显示上传文件进度条功能。分享给大家供大家参考,具体如下:

<html>
  <head>
  </head>
  <body>
      <p>
  emo_album_id:<input type="text" name="emo_album_id" id="emo_album_id" value='1'>
</p>
<p>
  name:<input type="text" name="title" id="title">
</p>
      <div class="row">
        <label for="file">
          Upload Image:</label>
        <input type="file" name="fileToUpload" id="fileToUpload" multiple="multiple" onchange="fileSelected();" />
      </div>
SentenceMovie[photo]
      <div id="fileName">
      </div>
      <div id="fileSize">
      </div>
      <div id="fileType">
      </div> 
      <div id="progressNumber">
      </div>
    <script>
          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;
              uploadFile();
            }
          }
          function uploadFile() {
            var fd = new FormData();
            fd.append("upload_file", document.getElementById('fileToUpload').files[0]);
            fd.append("emo_album_id", document.getElementById('emo_album_id').value);
            fd.append("title", document.getElementById('title').value);
            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", "http://mysae.com/emotions/1/api/index.php/emo/upload");
            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) {
            /* This event is raised when the server send back a response */
            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>
  </body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript与C# Windows应用程序交互方法
Jun 29 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
Mar 26 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
Nov 19 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
May 10 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
ES6新特性八:async函数用法实例详解
Apr 21 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
Dec 02 Javascript
vue基于better-scroll仿京东分类列表
Jun 30 Javascript
js实现的在本地预览图片功能示例
Nov 09 #Javascript
vue 取出v-for循环中的index值实例
Nov 09 #Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 #Javascript
Vue实现页面添加水印功能
Nov 09 #Javascript
vue 实现特定条件下绑定事件
Nov 09 #Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
Nov 09 #Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 #Javascript
You might like
我的论坛源代码(八)
2006/10/09 PHP
调整PHP的性能
2013/10/30 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
js left,right,mid函数
2008/06/10 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
利用js给datalist或select动态添加option选项的方法
2018/01/25 Javascript
用Python的Tornado框架结合memcached页面改善博客性能
2015/04/24 Python
python3中str(字符串)的使用教程
2017/03/23 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python初步实现word2vec操作
2020/06/09 Python
Python学习笔记之装饰器
2020/08/06 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
方正Java笔试题
2014/07/03 面试题
敬老文明号事迹材料
2014/01/16 职场文书
运动会广播稿80字
2014/01/23 职场文书
活动总结范文
2014/08/30 职场文书
个人四风对照检查材料
2014/09/26 职场文书
三年级学生评语大全
2014/12/26 职场文书
素质教育培训心得体会
2016/01/19 职场文书
初三语文教学反思
2016/03/03 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
Redis过期数据是否会被立马删除
2022/07/23 Redis