根据扩展名确定文件是图片还是视频不起作用
Determining if a file is a picture or video based on extension not working
我正在尝试确定上传的文件是视频还是照片。我需要这个,以便根据文件扩展名,我可以将视频或照片发送到我的电报机器人。
让我失望的是,我的逻辑似乎是正确的:
form.parse(req, (err, fields, files) => {
if (err) {
res.render('error')
} else {
console.log('File uploaded : ' + files.upload.path + '/' + files.upload.name);
console.log('Fields : ' + fields);
console.log(path.extname(files.upload.name))
if(path.extname(files.upload.name).toLowerCase() === ".jpeg" || ".jpg" || ".png" || ".tiff" || ".gif") {
console.log("image")
}
else if(path.extname(files.upload.name).toLowerCase() === ".mp4" || ".m4a"|| ".f4v" || ".m4b" || ".mov") {
console.log("video")
}
else {
render('error')
}
res.render('success')
}
});
上传 .mp4 视频文件时,它会打印它是 .mp4,但随后会打印图像。我不确定为什么会这样。非常感谢任何帮助。
您尝试使用的 or 比较并不像您认为的那样有效。只有你的第一个比较是使用 path.extname(files.upload.name).toLowerCase()
的值,其他人正在评估字符串的真实性并适当地返回。因此,第一个 if
总是会被输入。
例如
> x = 5
5
> if ( x == 4 || ".jpg" ) {console.log("Yep")};
Yep
> if ( x == 5 && "" ) {console.log("Yep")};
undefined
> if ( x == 5 && "yep" ) {console.log("Yep")};
Yep
你的代码有问题
form.parse(req, (err, fields, files) => {
if (err) {
res.render('error')
} else {
console.log('File uploaded : ' + files.upload.path + '/' + files.upload.name);
console.log('Fields : ' + fields);
console.log(path.extname(files.upload.name))
let extension = path.extname(files.upload.name).toLowerCase();
if(extension === ".jpeg" || extension === ".jpg" || extension === ".png" || extension === ".tiff" || extension === ".gif") {
console.log("image")
}
else if(extension === ".mp4" || extension === ".m4a"|| extension === ".f4v" || extension === ".m4b" || extension === ".mov") {
console.log("video")
}
else {
render('error')
}
res.render('success')
}
});
我正在尝试确定上传的文件是视频还是照片。我需要这个,以便根据文件扩展名,我可以将视频或照片发送到我的电报机器人。
让我失望的是,我的逻辑似乎是正确的:
form.parse(req, (err, fields, files) => {
if (err) {
res.render('error')
} else {
console.log('File uploaded : ' + files.upload.path + '/' + files.upload.name);
console.log('Fields : ' + fields);
console.log(path.extname(files.upload.name))
if(path.extname(files.upload.name).toLowerCase() === ".jpeg" || ".jpg" || ".png" || ".tiff" || ".gif") {
console.log("image")
}
else if(path.extname(files.upload.name).toLowerCase() === ".mp4" || ".m4a"|| ".f4v" || ".m4b" || ".mov") {
console.log("video")
}
else {
render('error')
}
res.render('success')
}
});
上传 .mp4 视频文件时,它会打印它是 .mp4,但随后会打印图像。我不确定为什么会这样。非常感谢任何帮助。
您尝试使用的 or 比较并不像您认为的那样有效。只有你的第一个比较是使用 path.extname(files.upload.name).toLowerCase()
的值,其他人正在评估字符串的真实性并适当地返回。因此,第一个 if
总是会被输入。
例如
> x = 5
5
> if ( x == 4 || ".jpg" ) {console.log("Yep")};
Yep
> if ( x == 5 && "" ) {console.log("Yep")};
undefined
> if ( x == 5 && "yep" ) {console.log("Yep")};
Yep
你的代码有问题
form.parse(req, (err, fields, files) => {
if (err) {
res.render('error')
} else {
console.log('File uploaded : ' + files.upload.path + '/' + files.upload.name);
console.log('Fields : ' + fields);
console.log(path.extname(files.upload.name))
let extension = path.extname(files.upload.name).toLowerCase();
if(extension === ".jpeg" || extension === ".jpg" || extension === ".png" || extension === ".tiff" || extension === ".gif") {
console.log("image")
}
else if(extension === ".mp4" || extension === ".m4a"|| extension === ".f4v" || extension === ".m4b" || extension === ".mov") {
console.log("video")
}
else {
render('error')
}
res.render('success')
}
});