KeystoneJSfile upload不起作用在我的应用程序

我们正在和一个使用Keystonejs 0.3.16的客户端合作,提供将file upload到服务器文件系统的可能性(不是来自keystone admin ui)。 一方面,这似乎是微不足道的,我预计这将在不到一个小时的时间内工作。 经过这个工作,直到午夜之后,由于这样一个事实,我会睡得更好,我不得不暂时辞职,事实上,我的梦想因此而不得而知。 多么怪胎,你必须想想,得到一个生命! 但是,我相信很多人会知道这种感觉。 我现在转向你,社区和keystonejs作者,帮助我理解我在这里失去的东西。

我正在使用最新版本的密钥库,我尝试了多个库来处理作为中间件组件的多部分格式file upload。 Multer,强大的jfum,jquery-file-upload-middleware,connect-busboy,connect-multiparty …我都做了。 一个甚至没有安装,由于一些编译错误,由于不兼容的库,有些给了我500错误告诉我,req.status没有定义,所有其他人告诉我,上传顺利,但req.body和req.file留空了,没有下载。

我甚至添加了一些日志logging来彻底清除lib“makeMiddleware”,以查看文件是否在那里被parsing,但是busboy.on('file',…)事件永远不会被触发,表明没有文件存在于主体中。

我还没有在一个基本的Nodejs Express服务器应用程序中尝试过,只有在keystone js应用程序,所以也许keystone预处理post请求以某种方式解释这种现象,例如。 在文件内容到达我的中间件之前剥离文件内容?

这是我的基本forms:

<form method="post" role="form" enctype="multipart/form-data" action="/bo/lib/upload"> <input type="file" id="imageFileId" name=" imageFileName"> <input type="submit" value="Upload Image"> <form> 

在这里我使用Multer的例子是:

 var upload = multer({ dest: './uploads/'}); exports = module.exports = function(app) { app.post('/', upload.single('myimage'), function(req, res){ console.log(req.body) // returns empty ??? console.log(req.file) // returns empty ??? res.status(204).end() }]); }; 

如果有人(也许是keystonejs开发者身边的某个人)可以帮助我理解这一点,或者甚至更好地解决这个问题,我将非常感谢您的帮助,并确信今晚睡得更好;-)

有同样的问题。 Keystone在使用bodyParserparsingreq之前,它已经到达了./routes/index.js,在那里你试图parsing请求的地址(或者是我的情况下是busboy)。 在app.use(bodyParser.json())禁用app.use(bodyParser.json())app.use(bodyParser.urlencoded())不能解决问题。

这是由事实certificate,如果你console.log(req.body)它被填充,但添加一个事件监听器,调用console.log("Multer of busboy just parsed a file or field")在multer或busboy的parsing字段或文件将永远不会输出。