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 相关文章推荐
JQuery 风格的HTML文本转义
Jul 01 Javascript
使用js 设置url参数
Jul 08 Javascript
javascript表单验证和Window详解
Dec 11 Javascript
JavaScript中计算网页中某个元素的位置
Jun 10 Javascript
JQuery实现鼠标滚轮滑动到页面节点
Jul 28 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
Angular-UI Bootstrap组件实现警报功能
Jul 16 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
Oct 29 Javascript
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
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
聊天室php&amp;mysql(一)
2006/10/09 PHP
PHP 手机归属地查询 api
2010/02/08 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
jQuery的学习步骤
2011/02/23 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
vue的webcamjs集成方式
2020/11/16 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python简单连接MongoDB数据库的方法
2016/03/15 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
对python生成业务报表的实例详解
2019/02/03 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
pyqt5 删除layout中的所有widget方法
2019/06/25 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
实习销售业务员自我鉴定
2013/09/21 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
品酒会策划方案
2014/05/26 职场文书
文明倡议书
2015/01/19 职场文书
房屋质量投诉书
2015/07/02 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL