如何在 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);
  }
});

谁能帮帮我吗?

原文由 Daniel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 608
2 个回答

要以兆字节为单位获取文件大小:

 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;
}

原文由 Jameel 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果你使用 ES6 和解构,找到一个文件的字节大小只需要 2 行(如果 fs 模块已经声明了!):

 const fs = require('fs');
const {size} = fs.statSync('path/to/file');

请注意,如果已声明 size 变量,这将失败。这可以通过在使用冒号解构时重命名变量来避免:

 const fs = require('fs');
const {size: file1Size} = fs.statSync('path/to/file1');
const {size: file2Size} = fs.statSync('path/to/file2');

原文由 Nadav 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题