如何找到Node.js中文件的大小?
How to find the size of the file in Node.js?
我正在使用 multer 上传我的图片和文档,但这次我想限制上传图片的大小 >2mb。如何找到文档的文件大小?到目前为止,我尝试如下但没有工作。
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, common.upload.student);
},
filename: function (req, file, callback) {
console.log(file.size+'!!!!!!!!!!!!!!')======>'Undefined'
var ext = '';
var name = '';
if (file.originalname) {
var p = file.originalname.lastIndexOf('.');
ext = file.originalname.substring(p + 1);
var firstName = file.originalname.substring(0, p + 1);
name = Date.now() + '_' + firstName;
name += ext;
}
var filename = file.originalname;
uploadImage.push({ 'name': name });
callback(null, name);
}
});
谁能帮帮我?
获取文件大小(以兆字节为单位):
var fs = require("fs"); // Load the filesystem module
var stats = fs.statSync("myfile.txt")
var fileSizeInBytes = stats.size;
// Convert the file size to megabytes (optional)
var fileSizeInMegabytes = fileSizeInBytes / (1024*1024);
或以字节为单位:
function getFilesizeInBytes(filename) {
var stats = fs.statSync(filename);
var fileSizeInBytes = stats.size;
return fileSizeInBytes;
}
此外,您可以使用 NPM filesize 包:https://www.npmjs.com/package/filesize
这个包使事情更容易配置。
var fs = require("fs"); //Load the filesystem module
var filesize = require("filesize");
var stats = fs.statSync("myfile.txt")
var fileSizeInMb = filesize(stats.size, {round: 0});
@gerryamurphy 的 link 对我来说是坏的,所以我会 link 我为此制作的包。
https://github.com/dawsbot/file-bytes
API 简单易用:
fileBytes('README.md').then(size => {
console.log(`README.md is ${size} bytes`);
});
你也可以从 npm 检查这个包:https://www.npmjs.com/package/file-sizeof
API 非常简单,它以 SI
和 IEC
表示法给出文件大小。
const { sizeof } = require("file-sizeof");
const si = sizeof.SI("./testfile_large.mp4");
const iec = sizeof.IEC("./testfile_large.mp4");
并且生成的对象表示从 B
(字节)到 PB
(PB)的大小。
interface ISizeOf {
B: number;
KB: number;
MB: number;
GB: number;
TB: number;
PB: number;
}
注意:以下是 Electron 应用程序的上下文。
使用以下内容:
window.require("fs")
而不只是:
require("fs")
为我解决了这个问题。
如果你使用 ES6 和解构,找到一个文件的字节大小只需要 2 行(如果已经声明了 fs 模块!):
const fs = require('fs');
const {size} = fs.statSync('path/to/file');
请注意,如果已声明大小变量,这将失败。这可以通过在使用冒号解构时重命名变量来避免:
const fs = require('fs');
const {size: file1Size} = fs.statSync('path/to/file1');
const {size: file2Size} = fs.statSync('path/to/file2');
对于任何使用本机包寻找当前答案的人,这里是如何使用 fs
(具体来说,fsPromises)和 [=12= 获取文件的 mb 大小而不阻塞事件循环]/await
:
const fs = require('fs').promises;
const BYTES_PER_MB = 1024 ** 2;
// paste following snippet inside of respective `async` function
const fileStats = await fs.stat('/path/to/file');
const fileSizeInMb = fileStats.size / BYTES_PER_MB;
您可以找到以字节为单位的大小。
const libFS = require('fs');
let yourFilesize = fs.statSync("File path").size
console.log(yourFilesize)
我正在使用 multer 上传我的图片和文档,但这次我想限制上传图片的大小 >2mb。如何找到文档的文件大小?到目前为止,我尝试如下但没有工作。
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, common.upload.student);
},
filename: function (req, file, callback) {
console.log(file.size+'!!!!!!!!!!!!!!')======>'Undefined'
var ext = '';
var name = '';
if (file.originalname) {
var p = file.originalname.lastIndexOf('.');
ext = file.originalname.substring(p + 1);
var firstName = file.originalname.substring(0, p + 1);
name = Date.now() + '_' + firstName;
name += ext;
}
var filename = file.originalname;
uploadImage.push({ 'name': name });
callback(null, name);
}
});
谁能帮帮我?
获取文件大小(以兆字节为单位):
var fs = require("fs"); // Load the filesystem module
var stats = fs.statSync("myfile.txt")
var fileSizeInBytes = stats.size;
// Convert the file size to megabytes (optional)
var fileSizeInMegabytes = fileSizeInBytes / (1024*1024);
或以字节为单位:
function getFilesizeInBytes(filename) {
var stats = fs.statSync(filename);
var fileSizeInBytes = stats.size;
return fileSizeInBytes;
}
此外,您可以使用 NPM filesize 包:https://www.npmjs.com/package/filesize
这个包使事情更容易配置。
var fs = require("fs"); //Load the filesystem module
var filesize = require("filesize");
var stats = fs.statSync("myfile.txt")
var fileSizeInMb = filesize(stats.size, {round: 0});
@gerryamurphy 的 link 对我来说是坏的,所以我会 link 我为此制作的包。
https://github.com/dawsbot/file-bytes
API 简单易用:
fileBytes('README.md').then(size => {
console.log(`README.md is ${size} bytes`);
});
你也可以从 npm 检查这个包:https://www.npmjs.com/package/file-sizeof
API 非常简单,它以 SI
和 IEC
表示法给出文件大小。
const { sizeof } = require("file-sizeof");
const si = sizeof.SI("./testfile_large.mp4");
const iec = sizeof.IEC("./testfile_large.mp4");
并且生成的对象表示从 B
(字节)到 PB
(PB)的大小。
interface ISizeOf {
B: number;
KB: number;
MB: number;
GB: number;
TB: number;
PB: number;
}
注意:以下是 Electron 应用程序的上下文。
使用以下内容:
window.require("fs")
而不只是:
require("fs")
为我解决了这个问题。
如果你使用 ES6 和解构,找到一个文件的字节大小只需要 2 行(如果已经声明了 fs 模块!):
const fs = require('fs');
const {size} = fs.statSync('path/to/file');
请注意,如果已声明大小变量,这将失败。这可以通过在使用冒号解构时重命名变量来避免:
const fs = require('fs');
const {size: file1Size} = fs.statSync('path/to/file1');
const {size: file2Size} = fs.statSync('path/to/file2');
对于任何使用本机包寻找当前答案的人,这里是如何使用 fs
(具体来说,fsPromises)和 [=12= 获取文件的 mb 大小而不阻塞事件循环]/await
:
const fs = require('fs').promises;
const BYTES_PER_MB = 1024 ** 2;
// paste following snippet inside of respective `async` function
const fileStats = await fs.stat('/path/to/file');
const fileSizeInMb = fileStats.size / BYTES_PER_MB;
您可以找到以字节为单位的大小。
const libFS = require('fs');
let yourFilesize = fs.statSync("File path").size
console.log(yourFilesize)