제목에서와 같이.Multer가 이미지가 아닌 이상 파일이 업로드되지 않도록하려면 어떻게해야합니까?
나는 어디에서나 보았고 답을 찾을 수 없었다.
CODE : 이것은 내가 그렇게하도록 선택하면 PDF 파일을 업로드에서 저를 방지하지 않습니다
var upload = multer({dest:"./public/images/uploads/", limits: {fileSize: 250000}}).single("image");
문제.
제목에서와 같이.Multer가 이미지가 아닌 이상 파일이 업로드되지 않도록하려면 어떻게해야합니까?
나는 어디에서나 보았고 답을 찾을 수 없었다.
CODE : 이것은 내가 그렇게하도록 선택하면 PDF 파일을 업로드에서 저를 방지하지 않습니다
var upload = multer({dest:"./public/images/uploads/", limits: {fileSize: 250000}}).single("image");
문제.
docs에서는 fileFilter를 사용하여 파일 업로드를 건너 뛸 수 있다고 설명합니다.
의 FileFilter (https://github.com/expressjs/multer#filefilter) 나는이 file
전달한다고 가정 할 워드 프로세서
Set this to a function to control which files should be uploaded and which should be skipped. The function should look like this:
function fileFilter (req, file, cb) {
// The function should call `cb` with a boolean
// to indicate if the file should be accepted
// To reject this file pass `false`, like so:
cb(null, false)
// To accept the file pass `true`, like so:
cb(null, true)
// You can always pass an error if something goes wrong:
cb(new Error('I don\'t have a clue!'))
}
는 속성 mimetype
(https://github.com/expressjs/multer#api)가 있습니다. 당신이 건너 뛰고 싶다면 이것은 결정을위한 좋은 힌트 일 수 있습니다.
편집 : 이 GH 문제 (https://github.com/expressjs/multer/issues/114#issuecomment-231591339는) 사용에 대한 좋은 예를 포함한다. 파일 확장명을 쉽게 볼 수있을뿐 아니라 이름을 쉽게 바꿀 수 있고 MIME 형식을 고려해야하므로 중요합니다. 힌트에 대한
const path = require('path');
multer({
fileFilter: function (req, file, cb) {
var filetypes = /jpeg|jpg/;
var mimetype = filetypes.test(file.mimetype);
var extname = filetypes.test(path.extname(file.originalname).toLowerCase());
if (mimetype && extname) {
return cb(null, true);
}
cb("Error: File upload only supports the following filetypes - " + filetypes);
}
});
HTH
감사합니다! 그러나 그것은 나의 경우와 관련된 예제를 가진 완전한 답이 아니다 :) – Coder1000
나는 이것이 매우 잘 맞다고 생각한다. 링크 된 github 문제는 동일한 함수 (fileFilter)를 사용합니다. 또한 파일 이름 확장자가 잘못 될 수 있으므로 mime-type을 확인하는 것이 좋습니다. 투표를 이해하지 마십시오. 여분의 if 절이 문제가되지 않을 것이라고 생각했습니다. https://github.com/expressjs/multer/issues/114#issuecomment-231591339 :-) – silverfighter
답장에 이것을 포함시키지 않았습니까?/답을 수정하는 것은 어떻습니까? :) – Coder1000