黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 通過AJAX和formdata對象上傳文件

通過AJAX和formdata對象上傳文件

更新時間:2022-08-16 08:07:54 來源:動力節點 瀏覽1230次

AJAX 的引入標志著 Web 歷史上的巨大飛躍。無需重新加載頁面即可與 Web 服務器通信的能力徹底改變了 Web 應用程序的構建方式。自從動態網站的最初概念以來,啟用 AJAX (XMLHttpRequests) 的主要技術已經有了顯著的發展。

支持通過XMLHttpRequestAJAX 上傳文件。例如通過FormData對象,但不幸的是舊瀏覽器不支持它。

第 1 步:制作上傳表單

您需要做的第一件事是構建允許用戶選擇要上傳的文件的 HTML 表單。為了簡單起見,讓我們使用<input>帶有類型的標準元素file。

<form id="file-form" action="handler.php" method="POST">
  <input type="file" id="file-select" name="photos[]" multiple/>
  <button type="submit" id="upload-button">Upload</button>
</form>

請注意,該<input>元素包含該multiple屬性。這將允許用戶從瀏覽器啟動的文件選擇器中選擇多個文件。如果您不指定此屬性,則用戶只能選擇一個文件。

現在您已經設置了 HTML 表單,讓我們看看處理文件上傳的 JavaScript 代碼。

第2步:上傳文件到服務器

首先,您需要創建三個變量來保存對HTML 標記中的 、 和<form>元素的引用<input><button>

var form = document.getElementById('file-form');
var fileSelect = document.getElementById('file-select');
var uploadButton = document.getElementById('upload-button');

接下來,您需要將事件偵聽器附加到表單的onsubmit事件。

form.onsubmit = function(event) {
  event.preventDefault(); 
  // Update button text.
  uploadButton.innerHTML = 'Uploading...'; 
  // The rest of the code will go here...
}

在事件偵聽器中,您首先調用event.preventDefault()以阻止瀏覽器提交表單,從而允許我們使用 AJAX 處理文件上傳。

接下來,您將uploadButton'innerHTML屬性更新為Uploading..... 這只是向用戶提供一些反饋,以便他們知道文件正在上傳。

您的下一個工作是FileList從<input>元素中檢索 并將其存儲在變量中。您可以通過訪問該files屬性來執行此操作。

// Get the selected files from the input.
var files = fileSelect.files;

然后創建一個新FormData對象。這用于構造形成 AJAX 請求的數據有效負載的鍵/值對。

// Create a new FormData object.
var formData = new FormData();

第 3 步:從輸入中檢索文件

您的下一個工作是遍歷files數組中的每個文件并將它們添加到formData您剛剛創建的對象中。您還需要檢查用戶是否選擇了您期望的文件類型。

// Loop through each of the selected files.
 for (var i = 0; i < files.length; i++) {
   var file = files[i]; 
   // Check the file type.
   if (!file.type.match('image.*')) {
     continue;
   } 
   // Add the file to the request.
  formData.append('photos[]', file, file.name);
 }

在這里,您首先從files數組中獲取當前文件,然后檢查以確保它是圖像。文件的type屬性將文件類型作為字符串返回。因此,您可以使用 JavaScriptmatch()方法來確保此字符串與所需類型匹配。如果文件類型不匹配,則通過調用跳過該文件continue。

然后,您使用對象append上的方法formData將此文件添加到數據有效負載中。

該FormData.append()方法用于處理文件、Blob或字符串。

// Files
formData.append(name, file, filename);
// Blobs
formData.append(name, blob, filename);
// Strings
formData.append(name, value);    

第一個參數指定name數據條目的類型。這將key在數??據有效負載中形成。第二個參數指定將用作數據條目的File、Blob或。附加 a or時,您也可以指定 a ,但這不是必需的。StringvalueFileBlobfilename

第 4 步:與服務器通信

接下來,您需要設置XMLHttpRequest負責與服務器通信的那個。為此,您首先需要創建一個新XMLHttpRequest對象。

// Set up the request.
var xhr = new XMLHttpRequest();

您現在需要創建到服務器的新連接。您可以使用該open方法執行此操作。該方法采用三個參數。HTTP method,url將處理請求的 ,以及確定是否應異步處理請求的布爾值。

// Open the connection.
xhr.open('POST', 'handler.php', true);

接下來,您需要設置一個事件偵聽器,該偵聽器將在onload事件觸發時觸發。檢查對象的status屬性xhr將告訴您請求是否成功完成。

// Set up a handler for when the request finishes.
xhr.onload = function () {
  if (xhr.status === 200) {
    // File(s) uploaded.
    uploadButton.innerHTML = 'Upload';
  } else {
    alert('An error occurred!');
  }
};

現在剩下要做的就是發送請求。將對象傳遞給formData對象上send可用的方法xhr。

// Send the Data.
xhr.send(formData);

這就是開始使用 AJAX 上傳文件所需要知道的一切。您的服務器端代碼需要從請求中提取文件并根據需要處理它們。如果大家想了解更多相關知識,可以關注一下動力節點的AJAX教程,里面有更豐富的知識等著大家去學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲黄色片一级 | 美女视频很黄很暴黄是免费的 | 日韩欧美视频一区二区在线观看 | 涩涩视频网站 | 日本片免费观看一区二区 | 日本免费福利视频 | 日本欧美视频在线观看 | 亚洲另类视频在线观看 | 99re在线视频观看 | 欧美日韩视频一区二区在线观看 | 甜性涩爱手机在线观看 | 国产不卡一区二区视频免费 | 国产一卡2卡3卡免费网站 | 久久影院秋霞理论 | 在线视频亚洲一区 | 一个人看的www免费视频中文 | 99pao在线视频成精品 | 香蕉视频在线观看黄 | 在线欧美69v免费观看视频 | 狠狠操夜夜| 两性色午夜视频免费播放 | 激情五月综合网 | 欧美高清在线精品一区 | 免费看片网址 | 99九九精品 | 18在线观看国内精品视频 | 久久8| 国产视频精品免费 | 丝袜美腿中文字幕 | 国产好片无限资源 | 欧美最猛黑人xxxxx猛交 | 欧美三级日韩三级 | 国产日韩久久 | 中文亚洲字幕 | 手机看片精品高清国产日韩 | 99九九99九九九视频精品 | 天天久久综合 | 色六月婷婷 | 中国免费一级毛片 | 国产免费无遮挡在线观看视频 | 成人在线观看高清完整免费 |