美好的一天,
我是node.js生态系统的新手,所以请原谅我是一名初学者。我基本上想要配置loopback,bodyparser和multer做一件事,我希望Phone.imageFile属性从上传的图像文件中获取值。通过邮递员发布我的Phone
模型数据,其中body作为表单数据,没有额外的标题会导致以下错误。
"error": {
"name": "ValidationError",
"status": 422,
"message": "The `Phone` instance is not valid. Details: `imageFile` can't be blank (value: undefined).",
"statusCode": 422,
"details": {
"context": "Phone",
"codes": {
"imageFile": [
"presence"
]
},
"messages": {
"imageFile": [
"can't be blank"
]
}
}
我还可以通过以下配置验证图像文件是否正在上传到 ./ phoneImageFiles / 文件夹。我还可以说这些字段已正确读取,因为错误消息未提及其他必需的非可空字段
'use strict';
var loopback = require('loopback');
var boot = require('loopback-boot');
var bodyParser = require('body-parser');
var multer = require('multer');
var app = module.exports = loopback();
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true }));
app.use(multer({dest:'./phoneImageFiles/', }).single("imageFile"));
有人可以帮帮我吗?我尝试做app.use()配置,我之前通过stackoverflow / google搜索看到,但似乎这样做是无效的,因为在那些内部打印一个console.log似乎什么都不做(可能没有被调用)
github repo:https://github.com/silencer07/PinoyDroidMatch
谢谢!
答案 0 :(得分:0)
确定。离开一段时间后,我能够找到一种方法来做到这一点。请注意,我的应用上传文件只有管理员访问权限,因此我选择使用内存存储,而且它们只是图像文件,因此我选择将缓冲区本身存储到mongodb文档中(不管是真实的项目)
配置mutler:
var multer = require('multer');
var storage = multer.memoryStorage();
app.use(multer({storage : storage, }).single("imageFile"));
在远程钩子之前配置:
Phone.beforeRemote('**', function (ctx, unused, next) {
var req = ctx.req;
//uploaded using multer
if(req.file){
var imageFile = req.file.buffer;
var fileName = req.file.originalname;
console.log("uploaded file:" + fileName);
var imageFileType = fileName.substring(fileName.indexOf(".") + 1, fileName.length);
req.body.imageFile = imageFile;
req.body.imageFileType = imageFileType;
}
next();
});
此致