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
'source' 카테고리의 다른 글
Swift의 정적 함수 변수 (0) | 2023.09.09 |
---|---|
UIScrollView가 상단 또는 하단에 도달했는지 확인합니다. (0) | 2023.09.04 |
파이썬을 사용하여 네이티브 아이폰 앱을 작성할 수 있습니까? (0) | 2023.09.04 |
초당 Ajax 요청 실행 (0) | 2023.09.04 |
키클로크와 스프링을 사용하여 모든 사용자를 읽으려면 어떻게 해야 합니까? (0) | 2023.09.04 |