久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么通過AJAX和formdata對象上傳文件

163次閱讀
沒有評論

共計 2707 個字符,預計需要花費 7 分鐘才能閱讀完成。

本篇內容介紹了“怎么通過 AJAX 和 formdata 對象上傳文件”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

第 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 或字符串。

// FilesformData.append(name, file, filename);// BlobsformData.append(name, blob, filename);// StringsformData.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 和 formdata 對象上傳文件”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-18發表,共計2707字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 南川市| 英超| 安新县| 响水县| 宁国市| 仲巴县| 枣强县| 海丰县| 汾阳市| 化德县| 盘山县| 平山县| 临夏市| 山西省| 延寿县| 色达县| 嘉禾县| 石泉县| 汶川县| 龙州县| 临湘市| 大兴区| 巴塘县| 定边县| 屯留县| 汕头市| 盐池县| 壶关县| 汉川市| 叙永县| 宝山区| 旺苍县| 南溪县| 天镇县| 古丈县| 阿拉善右旗| 太湖县| 兴义市| 根河市| 松溪县| 子长县|