JavaScript Node 检查文件或目录是否为空

Posted by cl9000 on June 29, 2021

在事情成功之前,一切总看似不可能。——<纳尔逊·曼德拉>

介绍

Web 应用程序通常以某种形式接收用户输入- 对于任何输入,验证都很重要。确保表单字段包含有效数据,或者它们包含任何数据是您可以做的第一项检查。

当用户上传文件时 - 您需要检查这些文件是否为空,而不仅仅是它们是否存在。
此外,由于 Node 支持服务器端开发并且可以使用文件系统,您会发现自己一直在使用文件和目录,尤其是在创建 CLI 应用程序时。

在本指南中,我们将看看如何使用 Node.js 检查文件或目录是否为空。

注意:两方面查研究 - 从前端接收文件并对其进行验证,或者使用文件系统而不考虑可能不存在的前端。

检查是否使用 JavaScript 选择了文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!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

1
2
3
4
5
6
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,则文件为空:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
router.post('/upload', function(req, res) {
trueconst fs = require('fs');
trueconst multiparty = require('multiparty');
truelet form = new multiparty.Form();
trueform.parse(req, function(err, fields, files) {
truetruelet file = files.keySelect[0];
truetruefs.readFile(file, function(err, data) {
truetruetrueif (data.length == 0) {
truetruetruetruereturn res.status(422).json({message : "File is empty! Unprocessable Entity."});
truetruetrue}
truetrue})
true});
truereturn res.status(200).json({message: "Success"});
});

如果不处理表单提供的文件,并且已经记住了名称,则可以完全跳过此过程并直接读取文件:

1
2
3
4
5
6
7
fs.readFile("myFile.txt", function(err, data) {
trueif (data.length == 0) {
truetrueconsole.log("File is empty!");
true} else {
truetrueconsole.log("File is not empty!");
true}
})

使用 Node.js 检查目录是否为空

在检查目录是否为空时,我们可以使用以下 readDir() 方法:

1
2
3
4
5
6
7
fs.readdir(directoryName, function(err, data) {
trueif (data.length == 0) {
truetrueconsole.log("Directory is empty!");
true} else {
truetrueconsole.log("Directory is not empty!");
true}
})

结论

处理文件对于 Node 项目来说是司空见惯的,因为它旨在用于服务器端。您可以执行以验证文件的基本检查之一是检查它们是否为空。

参考

关注【公众号】,了解更多。



支付宝打赏 微信打赏

赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!