亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

php 下 html5 XHR2 + FormData + File API 上傳文件操作實例分析

 更新時間:2020年02月28日 10:35:31   作者:懷素真  
這篇文章主要介紹了php 下 html5 XHR2 + FormData + File API 上傳文件操作,結(jié)合實例形式分析了php 下使用html5 XHR2 + FormData + File API 實現(xiàn)上傳文件操作方法與相關(guān)操作注意事項,需要的朋友可以參考下

本文實例講述了php 下 html5 XHR2 + FormData + File API 上傳文件操作。分享給大家供大家參考,具體如下:

FormData的作用:

FormData對象可以幫助我們自動的打包表單數(shù)據(jù),通過XMLHttpRequest的send()方法來提交表單。當然FormData也可以動態(tài)的append數(shù)據(jù)。FormData的最大優(yōu)點就是我們可以異步上傳一個二進制文件。

例1如下:

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form method="post" id="myForm" onsubmit="return post();">
    用戶名<input type="text" name="uname" />
    密碼<input type="password" name="upwd" />
    郵箱<input type="text" name="uemail" />
    <input type="submit" name="submit" value="提交" />
  </form>
</body>
<script type="text/javascript">
function post() {
  var myForm = document.getElementById("myForm");
  //FormData既可以從表單讀取數(shù)據(jù),也可以動態(tài)append(鍵,值)添加
  var fd = new FormData(myForm);

  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
      alert(this.responseText);
    }
  };
  xhr.open("post", "post.php", true);
  xhr.send(fd);
  return false;
}
</script>
</html>

File API

使用HTML5 DOM新增的File API,現(xiàn)在可以讓網(wǎng)頁要求用戶選擇本地文件,并且讀取這些文件的信息了。

通過File API,我們可以在用戶選取一個或者多個文件之后,訪問到代表了所選文件的一個或多個File對象,這些對象被包含在一個FileList對象中。

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form method="post" id="myForm">
    <input type="file" name="file" id="upfile" />
    <input type="submit" name="submit" value="提交" />
  </form>
</body>
<script type="text/javascript">
  var upfile = document.getElementById("upfile");
  upfile.onchange = function() {
    var file = this.files[0];
    alert("文件名:" + file.name + "\r\n" + "大小:" + file.size + "\r\n");
  };
</script>
</html>

我們通過FormData + File API 上傳文件

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form method="post" id="myForm">
    <input type="file" name="file" id="upfile" />
    <input type="submit" name="submit" value="提交" />
  </form>
</body>
<script type="text/javascript">
  var myForm = document.getElementById("myForm");
  var upfile = document.getElementById("upfile");

  myForm.onsubmit = function() {
    //我們創(chuàng)建一個FormData對象
    var fd = new FormData();
    var file = upfile.files[0];
    //把文件添加到FormData對象中
    fd.append("file", file);

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4) {
        alert(this.responseText);
      }
    };
    xhr.open("post", "upfile.php", true);
    //發(fā)送FormData對象
    xhr.send(fd);
    return false;
  };
</script>
</html>

upfile.php代碼如下:

<?php
$uploadDir = './upload/';
if(!file_exists($uploadDir)) {
  @mkdir($uploadDir, 0777, true);
}
$uploadFile = $uploadDir . basename($_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
  echo "OK";
} else {
  echo "NO";
}

使用對象URL來顯示你所選擇的圖片

通過window.URL.createObjectURL()和 window.URL.revokeObjectURL()兩個DOM方法。

這兩個方法創(chuàng)建簡單的URL字符串對象,用于指向任何 DOM File 對象數(shù)據(jù),包括用戶電腦中的本地文件。

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <form method="post" id="myForm">
    <input type="file" name="file" id="upfile" />
    <input type="submit" name="submit" value="提交" />
  </form>
</body>
<script type="text/javascript">
  var myForm = document.getElementById("myForm");
  var upfile = document.getElementById("upfile");

  upfile.onchange = function() {
    //創(chuàng)建一個img標簽
    var img = document.createElement("img");
    //通過file對象創(chuàng)建對象URL
    img.src = window.URL.createObjectURL(this.files[0]);
    img.height = 60;
    img.onload = function() {
      //釋放對象URL
      window.URL.revokeObjectURL(this.src);
    };
    document.body.appendChild(img);
  };

  myForm.onsubmit = function() {
    //我們創(chuàng)建一個FormData對象
    var fd = new FormData();
    var file = upfile.files[0];
    //把文件添加到FormData對象中
    fd.append("file", file);

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4) {
        alert(this.responseText);
      }
    };
    xhr.open("post", "upfile.php", true);
    //發(fā)送FormData對象
    xhr.send(fd);
    return false;
  };
</script>
</html>

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php文件操作總結(jié)》、《PHP目錄操作技巧匯總》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》及《PHP網(wǎng)絡(luò)編程技巧總結(jié)

希望本文所述對大家PHP程序設(shè)計有所幫助。

相關(guān)文章

  • php從數(shù)據(jù)庫查詢結(jié)果生成樹形列表的方法

    php從數(shù)據(jù)庫查詢結(jié)果生成樹形列表的方法

    這篇文章主要介紹了php從數(shù)據(jù)庫查詢結(jié)果生成樹形列表的方法,涉及php操作html元素生成樹形列表的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • php使用Jpgraph繪制復雜X-Y坐標圖的方法

    php使用Jpgraph繪制復雜X-Y坐標圖的方法

    這篇文章主要介紹了php使用Jpgraph繪制復雜X-Y坐標圖的方法,通過設(shè)置圖像陰影、邊距、字體、顏色、曲線等實現(xiàn)Jpgraph繪制復雜坐標圖的功能,非常簡單實用,需要的朋友可以參考下
    2015-06-06
  • PHP實現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機獲取20條記錄的方法

    PHP實現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機獲取20條記錄的方法

    這篇文章主要介紹了PHP實現(xiàn)在數(shù)據(jù)庫百萬條數(shù)據(jù)中隨機獲取20條記錄的方法,涉及php簡單數(shù)據(jù)庫查詢與隨機數(shù)操作相關(guān)技巧,需要的朋友可以參考下
    2017-04-04
  • 探討:如何編寫PHP擴展

    探討:如何編寫PHP擴展

    本篇文章是對如何編寫PHP擴展進行了詳細的分析介紹, 需要的朋友參考下
    2013-06-06
  • PHP實現(xiàn)LRU算法的示例代碼

    PHP實現(xiàn)LRU算法的示例代碼

    LRU是Least Recently Used 近期最少使用算法, 內(nèi)存管理的一種頁面置換算法。本文將詳解LRU算法的原理以及實現(xiàn),感興趣的小伙伴可以學習一下
    2022-06-06
  • 使用PHP批量生成隨機用戶名

    使用PHP批量生成隨機用戶名

    生成6 ~ 16位的用戶名若干個,主要是文本操作,同事前提是要有一個字符串包。主要包含三個程序。
    2008-07-07
  • 比較全的PHP 會話(session 時間設(shè)定)使用入門代碼

    比較全的PHP 會話(session 時間設(shè)定)使用入門代碼

    由于 Session 是以文本文件形式存儲在服務(wù)器端的,所以不怕客戶端修改 Session 內(nèi)容。實際上在服務(wù)器端的 Session 文件,PHP 自動修改 Session 文件的權(quán)限,只保留了系統(tǒng)讀和寫權(quán)限,而且不能通過 ftp 修改,所以安全得多。
    2008-06-06
  • php中隨機函數(shù)mt_rand()與rand()性能對比分析

    php中隨機函數(shù)mt_rand()與rand()性能對比分析

    這篇文章主要介紹了php中隨機函數(shù)mt_rand()與rand()性能對比分析,較為詳細的分析了兩個函數(shù)的具體用法,并以實例形式分析了在不同平臺下的運行效率問題,需要的朋友可以參考下
    2014-12-12
  • PHP實現(xiàn)多級分類生成樹的方法示例

    PHP實現(xiàn)多級分類生成樹的方法示例

    這篇文章主要介紹了PHP實現(xiàn)多級分類生成樹的方法,涉及php+mysql數(shù)據(jù)庫操作及數(shù)組與字符串遍歷、替換、組合等相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • PHP學習筆記之session

    PHP學習筆記之session

    這篇文章我們給大家整理了關(guān)于PHP中session的相關(guān)用法以及知識點,對此有學習需要的讀者們可以跟著學習下。
    2018-05-05

最新評論