我试图找出文件夹(内容)的大小,在挖掘出最好的方法之后,就是使用get-folder-size软件包。因此,以下代码讲述了故事的其余部分:
const express = require('express');
const app = express();
const getSize = require('get-folder-size');
var reqSize = 0;
// This serves static files from the specified directory
app.use(express.static(__dirname));
getSize('videos', (err, size) => {
if (!err) {
console.log(size + ' bytes');
console.log((size / 1024 / 1024).toFixed(2) + ' MB');
} else {
throw err;
}
});
app.get('/test', (req, res) => {
//res.sendFile(__dirname + '/views/test.html',);
res.json({ title: 'zaffar', message: 'abbas', size: reqSize });
});
const server = app.listen(3001, () => {
const host = server.address().address;
const port = server.address().port;
console.log('App listening at https://%s:%s', host, port);
});
getSize()
在控制台中打印正确大小的文件夹,我正在努力将其存储在变量中,以便可以使用 JavaScript将变量转发/传递给index.html。从服务器获取详细信息。 html文件 [从服务器获取详细信息的链接] [1]。我现在想将此获取的大小存储到变量中,请提供任何帮助/想法...。?
答案 0 :(得分:1)
文件夹大小计算是一个异步过程,执行异步过程时将使用promise和回调。
在这种情况下,我使用promises在计算结束时获取文件夹大小。
如果您不知道承诺的运作方式,请留下此链接,以便您可以 阅读和理解。 Promises。
getSize()
函数是使用promise的函数,计算异步运行,并且在结束时返回值(resolve
)或错误(reject
)。
function getSize() {
return new Promise((resolve, reject) => {
require('get-folder-size')('videos', (err, size) => {
if (err) return reject(err);
resolve({
sizeBytes: size + ' bytes',
sizeMB: (size / 1024 / 1024).toFixed(2) + ' MB',
});
});
});
}
在这里,我们获得了承诺的价值,要获取必须以这种方式进行处理的数据,这称为<承诺>解决承诺。
app.get('/test', (req, res) => {
//res.sendFile(__dirname +'/views/test.html',);
getSize().then((data) => {
const { sizeMB } = data;
res.json({ title: 'zaffar', message: 'abbas', size: sizeMB });
});
});
您已将所有更改应用于代码:
const express = require('express');
const app = express();
// This serves static files from the specified directory
app.use(express.static(__dirname));
function getSize() {
return new Promise((resolve, reject) => {
require('get-folder-size')('videos', (err, size) => {
if (err) return reject(err);
resolve({
sizeBytes: size + ' bytes',
sizeMB: (size / 1024 / 1024).toFixed(2) + ' MB',
});
});
});
}
app.get('/test', (req, res) => {
//res.sendFile(__dirname +'/views/test.html',);
getSize().then((data) => {
const { sizeMB } = data;
res.json({ title: 'zaffar', message: 'abbas', size: sizeMB });
});
});
const server = app.listen(3001, () => {
const host = server.address().address;
const port = server.address().port;
console.log('App listening at https://%s:%s', host, port);
});
答案 1 :(得分:1)
为什么不只在app.get('/ test')路由中调用getSize?
const express = require('express');
const app = express();
const getSize = require('get-folder-size');
var reqSize=0;
app.get('/test',(req,res)=>{
getSize("videos", (err, size) => {
if(!err && size > 0){
reqSize = (size / 1024 / 1024).toFixed(2) + ' MB';
}
res.json({title:"zaffar",message:"abbas", size:reqSize});
});
});