如问题标题所述,我需要根据文件扩展名过滤上传的文件。因此,我浏览了官方文档并搜索了该网站。
我尝试过的
我尝试过遇到的解决方案。文件已成功上传,但问题是如何过滤文件。目前,我的Router.js文件如下所示。
路由器
var multer = require('multer');
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, './public/uploads/')
},
limits:{
files: 1,
fileSize: 1024 * 1024
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1])
},
onFileUploadStart: function(file) {
console.log("Inside uploads");
if (file.mimetype == 'image/jpg' || file.mimetype == 'image/jpeg' || file.mimetype == 'image/png') {
return true;
}
else
{
return false;
}
}
});
var upload = multer({ //multer settings
storage: storage
}).single('profilepic');
router.post('/profile', function(req, res){
upload(req,res,function(err){
if(err)
{
console.log(err);
}
else
{
console.log("Image was uploaded");
}
});
});
我试着回显某些东西,onFileUploadStart
以检查它是否进入该功能。事实并非如此。此外onFileUploadStart
,我也fileFilter
按此链接所述进行了尝试,但没有帮助。有什么建议如何解决这个问题?提前致谢。
使用示例multer
:
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, './public/uploads/')
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1])
}
});
var upload = multer({ //multer settings
storage: storage,
fileFilter: function (req, file, callback) {
var ext = path.extname(file.originalname);
if(ext !== '.png' && ext !== '.jpg' && ext !== '.gif' && ext !== '.jpeg') {
return callback(new Error('Only images are allowed'))
}
callback(null, true)
},
limits:{
fileSize: 1024 * 1024
}
}).single('profilepic');
摘自Node.js-文件上传。原始作者是Iceman和Mikhail。归属详细信息可以在贡献者页面上找到。该来源已获得CCBY-SA 3.0的许可,可以在“
文档”存档中找到。参考主题ID:4080和示例ID:14210。
问题内容: 设法将我的文件存储在一个文件夹中,但是没有文件扩展名。 有谁知道我将如何存储带有文件扩展名的文件? 问题答案: 从文档中:“ Multer不会为您添加任何文件扩展名,您的函数应返回带有文件扩展名的文件名。” 添加扩展名的方法如下: 我建议使用该属性来确定扩展名。例如: 更多信息:https://github.com/expressjs/multer
我正在为我的公司开发一个小Java程序。在这个程序中,我需要重新从我的本地文件夹一些文件,但我需要搜索文件的前三个字符和扩展名。在阅读java文档时,我看到库已经存在,因此为了按照名称和扩展名过滤文件,我看到了和构造,我已经实现如下,所以我尝试使用它。 是否可以筛选各种文件名,并将连接到?
问题内容: 当我尝试处理文件上传时,是否应该基于文件MIME类型或文件扩展名运行验证? 这两种文件验证方式的优缺点是什么? 而且,我应该关注其他任何安全问题吗? 这些天来,我一直依靠MIME类型,但是这篇文章中投票最多的答案是 PHP中的文件上传问题说: 永远不要依赖浏览器提交的MIME类型! 问题答案: 好的,对于这里的所有热心人士,我都在讲一些关于“螺丝扩展,检查MIME!FILEINFO R
问题内容: 假设我在数据库表的列中有或,等等。 如何仅获取文件扩展名? 问题答案: 试试这个: sqlfiddle
问题内容: 假设从CGI开始,我已经将文件显示为文件。我想将的文件扩展名更改为显示文件。我该怎么做? 问题答案: , 例如:
问题内容: 我正在使用multer将文件保存在通过express&nodejs开发的服务器上。 我使用下面的代码。 Multer会为我将文件保存在指定的目标文件夹中。 所有这些都工作正常,但我有以下问题: 如果文件保存由于各种原因而失败,则看来我的路线将始终返回状态204。 我不确定在保存文件后或异步获取文件时是否取消状态204,是否返回状态204。 问题答案: 您可以使用以下选项处理错误: 如果