web-dev-qa-db-fra.com

Comment trouver la taille du fichier dans Node.js?

J'utilise multer pour télécharger mes images et mes documents, mais cette fois, je souhaite limiter le téléchargement si la taille de l'image est> 2 Mo. Comment trouver la taille du fichier du document? Jusqu'ici j'ai essayé comme ci-dessous mais je ne travaillais pas.

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

Est-ce que quelqu'un peut m'aider s'il vous plait?

15
Daniel
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 / 1000000.0

ou:

function getFilesizeInBytes(filename) {
    var stats = fs.statSync(filename)
    var fileSizeInBytes = stats["size"]
    return fileSizeInBytes
}
22
Jameel

De plus, utilisez le package NPM filesize https://www.npmjs.com/package/filesize

Ce paquet rend les choses un peu plus configurables

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

https://www.npmjs.com/package/filesize#examples

1
gerryamurphy

Le lien ci-dessus par @gerryamurphy est cassé pour moi, donc je vais créer un lien vers un paquet que j'ai créé pour cela.

https://github.com/dawsbot/file-bytes

L'API est simple et devrait être facilement utilisable: 

fileBytes('README.md').then(size => { console.log(`README.md is ${size} bytes`); });

Faites-moi savoir si vous avez besoin d'aide!

0
Dawson Botsford