JavaScript >> Javascript 文檔 >  >> JavaScript

節點:檢查文件或目錄是否為空

簡介

Web 應用程序通常以某種形式接收用戶輸入 - 對於任何輸入,驗證都很重要。確保表單域包含有效數據,或者它們包含任何數據是您可以做的首要檢查之一。

當用戶上傳文件時 - 您需要檢查這些文件是否為 ,而不僅僅是它們是否存在。此外,由於 Node 支持服務器端開發並且可以使用文件系統,因此您會發現自己一直在使用文件和目錄,尤其是在創建 CLI 應用程序時。

在本指南中,我們將了解如何使用 Node.js 檢查文件或目錄是否為空 .

注意: 這個任務可以通過兩個鏡頭來觀察——從前端接收文件並驗證它, 無論前端可能不存在,都可以使用文件系統。我們將看看兩者。

檢查文件是否被 JavaScript 選中

Vanilla JavaScript 不適合檢查文件是否為空,因為它可以檢查 form 附有文件,但無法處理文件本身。

我們將從那裡開始 - 檢查文件是否從文件系統中選擇並附加到表單中。讓我們在前端創建一個簡單的表單

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- Meta tags -->
</head>
<body>
    <form enctype="multipart/form-data">
    	<input type="file" name="file" id="file">
    	<button type="submit" onclick="checkFile()">Submit</button>    
    </form>
        
    <script src="script.js"></script>
</body>
</html>

該頁麵包含一個 <form> 接受 multipart 文件,通過 <input type="file"> .一旦按下按鈕,checkFile() 函數被觸發,從導入的 script.js

function checkFile() {
    let fileInputField = document.getElementById("file");
    if (fileInputField.files.length == 0) {
        alert("Please select a file!")
    }
}

我們得到我們的 input document.getElementById() 的元素 並檢查 files 的長度 屬性,其中一個 input file 類型 有。如果為空,我們會提醒用戶沒有選擇任何文件。

一旦我們確定用戶提供了文件 ,我們可以檢查他們是否提供了非空 文件。

fs 模塊

Node.js 是一個 JavaScript 運行時環境,在外部執行 JavaScript 代碼 的瀏覽器。這也使我們能夠與底層操作系統和文件系統進行交互。內置 fs (文件系統)模塊在這種情況下為我們創造了奇蹟。

我們將依賴 fs.readFile()fs.readdir() 方法。

使用 Node.js 檢查文件是否為空

一旦用戶通過表單將文件發送到您的後端,例如,發送到 /upload 端點,是時候檢查文件是否為空了。

最簡單的檢查方法是在文件中流式傳輸數據並檢查其長度。如果有 0 個字節 在文件中,或者更確切地說,如果 length 的數據等於 0 ,文件為空:

router.post('/upload', function(req, res) {
	const fs = require('fs');
	const multiparty = require('multiparty');
	let form = new multiparty.Form();
	form.parse(req, function(err, fields, files) {
		let file = files.keySelect[0];
		fs.readFile(file, function(err, data) {
			if (data.length == 0) {
				return res.status(422).json({message : "File is empty! Unprocessable Entity."});
			}
		})
	});
	return res.status(200).json({message: "Success"});
});

我們使用了 multiparty 模塊來從表單中獲取文件,但是,這一步也可以使用其他各種庫來完成,例如 Multer 或 Formidable。

使用 multiparty ,我們可以創建一個表單實例並解析它,傳遞 req 到它,也就是我們的formData 從前端發送。 keySelect() 方法返回全部 通過表單發送的文件,但由於我們的表單只接受一個並且我們只期待一個 - 我們通過 [0] 訪問它 .使用 fs.readFile() 方法,我們正在讀取文件並解壓縮它的 data .如果這個 data 有一個 length 0 - 文件為空,我們返回 422 Unprocesable Entity 狀態碼。

如果您不是在處理表單提供的文件,並且已經記住了名稱,則可以完全跳過此過程並直接讀取文件:

免費電子書:Git Essentials

查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!

fs.readFile("myFile.txt", function(err, data) {
	if (data.length == 0) {
		console.log("File is empty!");
	} else {
		console.log("File is not empty!");
	}
})

使用 Node.js 檢查目錄是否為空

檢查目錄是否為空時,我們可以使用 readDir() 方法:

fs.readdir(directoryName, function(err, data) {
	if (data.length == 0) {
		console.log("Directory is empty!");
	} else {
		console.log("Directory is not empty!");
	}
})

這兩種方法在語法上是完全等價的(除了方法的名稱),所以適用於一種的所有內容都適用於另一種。如果 data 目錄的等於 0 ,它是空的。

這通常與在目錄中列出文件相結合。

結論

處理文件對於 Node 項目來說是司空見慣的,因為它旨在用於服務器端。您可以執行的驗證文件的基本檢查之一是檢查它們是否為空。

在本指南中,我們了解瞭如何使用 Node.js 檢查文件或目錄是否為空。


Tutorial JavaScript 教程
  1. 簡單的庫並不保證簡單——重新思考流行的 NodeJs 庫

  2. 如何在 react-native App 中將多個圖像上傳到 AWS S3 - 第 2 部分

  3. 將 Twitter 重新思考為無服務器應用程序

  4. 錯誤:生成 npm ENOENT

  5. 使用 Nodejs 和 sendgrid 發送批量電子郵件以及 html 模板

  6. 使用 JavaScript 從數組中刪除零值

  7. 專業提示:使用屏幕錄像機調試 DOM 突變

  1. 一個可以與人們分享一切的博客網站 |我的反應項目

  2. 我如何在 Node.js 中製作 Instagram 內容獲取 API

  3. 如何在保持鍵查找的同時保持 Javascript 對象/數組有序?

  4. CSS Houdinis Layout API 解釋

  5. 創建您的第一個 Angular 應用程序:組件,第 2 部分

  6. Spotty:使用 Vue.js 和 Vuetify 構建 Spotify 網絡克隆

  7. React 和 D3:動態 COVID-19 可視化(第 1 部分:世界地圖)

  1. 如何成為編碼訓練營英雄!

  2. 使用 Vonage Video API 共享您的屏幕

  3. 以下是將現場搜索添加到您的網站的 5 個理由

  4. 你無法解決的最簡單的問題。