如何使用 JavaScript 上傳檔案而不使用表單?


有時,開發人員可能需要在 JavaScript 中不使用表單的情況下上傳檔案。通常,我們會建立一個表單來獲取使用者的資料和檔案,但在本教程中,我們將學習如何在沒有表單的情況下從使用者那裡獲取檔案並將其傳送到後端。

使用 FormData() 物件和 Ajax 請求

FormData 物件允許我們將表單資料儲存在鍵值對中。我們需要使用建構函式初始化變數。我們可以允許使用者使用 HTML 輸入上傳檔案並將該檔案儲存在表單資料中。之後,我們可以將表單資料傳送到後端。

語法

使用者可以按照以下語法使用 FormData() 物件和 ajax 請求在不使用表單的情況下上傳檔案。

form_data.append("file", uploadedFile);
$.ajax({
   url: "URL",
   method: "POST",
   data: form_data,
}); 

在上面的語法中,我們使用了 append() 方法在表單資料物件中新增檔案。此外,我們使用 ajax() 將資料傳送到 API。

示例

在下面的示例中,我們使用 <input> 標籤在 HTML 中建立了檔案輸入。在 JavaScript 中,每當使用者上傳檔案時,我們都會訪問它並將其新增到 form_data 物件中。

之後,我們使用 ajax 使用 POST 請求將檔案傳送到 API。

<html>
<head>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
</head>
<body>
   <h3>Using the <i>FormData object and ajax request</i> to upload a file without using the form data in JavaScript</h3>
   <input type = "file" name = "file" id = "file_input" />
   <div id = "content"> </div>
   <script>
      $(document).on('change', '#file_input', function () {
         let uploadedFile = document.getElementById('file_input').files[0];
         var form_data = new FormData();
         form_data.append("file", uploadedFile);
         $.ajax({
            url: "URL",
            method: "POST",
            data: form_data,
         });
      });
   </script>
</body>
</html>

使用 jQuery 簡單上傳外掛

jQuery 包含簡單的上傳外掛,我們可以使用它將檔案傳送到 API。我們需要將簡單上傳外掛的 CDN 新增到 <head> 部分才能使用它。如果開發人員正在使用應用程式,他們可以使用 NPM 命令來安裝軟體包。

語法

使用者應按照以下語法使用 jQuery 簡單上傳外掛在不使用表單的情況下使用 JavaScript 上傳檔案。

$(this).simpleUpload("URL", {
   start: function (file) {
      
      //upload started
   },
});

在上面的語法中,我們呼叫了簡單上傳外掛的 simpleUpload() 函式來上傳檔案。

示例

在下面的示例中,我們在 <head> 部分添加了 simpleUpload.min.js 檔案的路徑。我們在檔案輸入上添加了“change”事件。在回撥函式中,我們透過將檔案輸入作為參考來呼叫 simpleUpload() 函式。我們傳遞了一個物件作為 simpleUpload() 函式的第二個引數,其值是鍵和回撥函式。

<html>
<head> 
   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
   <script src= "https://cdn.jsdelivr.net/npm/jquery-simpleupload@1.1.0/simpleUpload.min.js"> </script>
</head>
<body>
   <h3>Using the <i>jQuery simple upload</i> plugin to upload the file without using the form</h3>
   <input type = "file" name = "file" id = "file_input">
   <div id = "content"> </div>
   <script>
      $('#file_input').change(function () {
         $(this).simpleUpload("abcd.php", {
            start: function (file) {
               
               //upload started
               content.innerHTML = "upload started";
            },
         });
      });
   </script>
</body>
</html> 

使用者學習了兩種不同的方法,可以在 JavaScript 中不使用表單的情況下上傳檔案。在第一種方法中,我們使用了 FormData 物件和 ajax() 方法。在第二種方法中,我們使用了 Jquery 的簡單上傳外掛。

更新於: 2023年3月9日

6K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.