4.3 傳送檔案資料

使用 fetch 語法傳檔

fetch 語法無法做「檔案上傳進度」的監聽。

建立 fetch_upload_file.html ,貼以下的原始碼,執行看看:

<!DOCTYPE html>
<html lang="zh-Hant">
  <head>
    <meta charset="utf-8">
    <title>使用 fetch 來將檔案上傳</title>
  </head>
  <body>
    <h1>使用 fetch 語法</h1>
    <input type="file" id="the_file" accept="image/*">
    <div class="upload_status"></div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script>
      $("#the_file").on("change", function(){
        // here
        //console.log(this.files);
        let form_data = new FormData();
        form_data.append("the_file", this.files[0]);

        $("div.upload_status").html("檔案傳送中…");
        

        // 使用 fetch 語法傳送檔案
        fetch("https://notes.webmix.cc/html5_tutorial/file/file_receive.php", {
          method: "POST",
          body: form_data
        }).then(res => res.json()).then(data => {
          console.log(data);
          $("div.upload_status").html("檔案傳送完成");
          $("div.upload_status").append(`<img src="${data.file_path}" style="width: 200px;">`);
        });

      });
        
      /*
      $("#the_file").on("change", async function(){
        // here
        //console.log(this.files);
        let form_data = new FormData();
        form_data.append("the_file", this.files[0]);

        $("div.upload_status").html("檔案傳送中…");
        

        // 使用 fetch 語法傳送檔案
        let res = await fetch("https://notes.webmix.cc/html5_tutorial/file/file_receive.php", {
          method: "POST",
          body: form_data
        });
        let data = await res.json();

        console.log(data);
        $("div.upload_status").html("檔案傳送完成");
        $("div.upload_status").append(`<img src="${data.file_path}" style="width: 200px;">`);

      });
      */

    </script>
  </body>
</html>

Last updated