zoukankan      html  css  js  c++  java
  • H5上传文件

    XMLHttpRequest 在Html5 规范中已经有全新的变化,规定了XMLHttpRequest Level 2规范(目前最新版本)包含下列新的特性:

    1. 处理字节流,例如作为上传或者下载的File,Blob,FormData对象
    2. 上传或者下载中的进度事件
    3. 跨站点请求
    4. 允许创建匿名请求
    5. 可以设置请求超时

    在这篇文章中我们将能够更清楚的看到#1和#2两个特性。通常,上传文件用XMLHttpRequest并且提供上传进度信息给最终的用户,需要注意的是这种方式解决了不需要服务器端做任何改变,至少是目前处理multipart/form-data协议。所以服务器端的处理逻辑保留不变,这使得开发者适应这种技术相当容易。

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <title>Upload Files using XMLHttpRequest - Minimal</title>
     5     <script type="text/javascript">
     6       function fileSelected() {
     7         var file = document.getElementById('fileToUpload').files[0];
     8         if (file) {
     9           var fileSize = 0;
    10           if (file.size > 1024 * 1024)
    11             fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
    12           else
    13             fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
    14           document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
    15           document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
    16           document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
    17         }
    18       }
    19       function uploadFile() {
    20         var fd = new FormData();
    21         fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
    22         var xhr = new XMLHttpRequest();
    23         xhr.upload.addEventListener("progress", uploadProgress, false);
    24         xhr.addEventListener("load", uploadComplete, false);
    25         xhr.addEventListener("error", uploadFailed, false);
    26         xhr.addEventListener("abort", uploadCanceled, false);
    27         xhr.open("POST", "upload.do");//修改成自己的接口
    28         xhr.send(fd);
    29       }
    30       function uploadProgress(evt) {
    31         if (evt.lengthComputable) {
    32           var percentComplete = Math.round(evt.loaded * 100 / evt.total);
    33           document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
    34         }
    35         else {
    36           document.getElementById('progressNumber').innerHTML = 'unable to compute';
    37         }
    38       }
    39       function uploadComplete(evt) {
    40         /* 服务器端返回响应时候触发event事件*/
    41         alert(evt.target.responseText);
    42       }
    43       function uploadFailed(evt) {
    44         alert("There was an error attempting to upload the file.");
    45       }
    46       function uploadCanceled(evt) {
    47         alert("The upload has been canceled by the user or the browser dropped the connection.");
    48       }
    49     </script>
    50 </head>
    51 <body>
    52   <form id="form1" enctype="multipart/form-data" method="post" action="Upload.aspx">
    53     <div class="row">
    54       <label for="fileToUpload">Select a File to Upload</label><br />
    55       <input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
    56     </div>
    57     <div id="fileName"></div>
    58     <div id="fileSize"></div>
    59     <div id="fileType"></div>
    60     <div class="row">
    61       <input type="button" onclick="uploadFile()" value="Upload" />
    62     </div>
    63     <div id="progressNumber"></div>
    64   </form>
    65 </body>
    66 </html>
  • 相关阅读:
    tf.contrib.layers.fully_connected参数笔记
    关于RNN(Recurrent Neural Network)的一篇文章
    tf.contrib.rnn.LSTMCell 里面参数的意义
    机器学习笔记——k-近邻算法(一)简单代码
    labview2016崩溃解决方案
    tecplot 插值问题
    网络设备
    tcp
    udp
    icmp
  • 原文地址:https://www.cnblogs.com/lifuhei/p/5937672.html
Copyright © 2011-2022 走看看