source

Node.js에서 파일의 크기를 찾는 방법은 무엇입니까?

lovecheck 2023. 9. 4. 20:26
반응형

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

누가 저를 도와주실 수 있나요?

파일 크기(MB)를 가져오는 방법

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

ES6를 사용하고 재구성하는 경우 파일 크기를 바이트 단위로 찾는 데는 두 줄만 걸립니다(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');

또한 다음 NPM 파일 크기 패키지를 사용할 수 있습니다. 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});

추가 예:
https://www.npmjs.com/package/filesize#examples

네이티브 패키지로 현재 답을 찾는 사용자는 다음을 사용하여 이벤트 루프를 차단하지 않고 파일의 MB 크기를 얻는 방법을 참조하십시오.fs(구체적으로, fsPromise) 및async/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;

@geryamurphy의 링크가 저를 위해 끊어졌으므로, 저는 이것을 위해 만든 패키지로 링크하겠습니다.

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(페타바이트).

interface ISizeOf {
  B: number;
  KB: number;
  MB: number;
  GB: number;
  TB: number;
  PB: number;
}

참고: 다음은 전자 응용 프로그램의 맥락 안에 있습니다.

다음을 사용합니다.

window.require("fs")

다음과 같은 기능을 제공합니다.

require("fs")

이 문제를 해결했습니다.

언급URL : https://stackoverflow.com/questions/42363140/how-to-find-the-size-of-the-file-in-node-js

반응형