我在节点上很新。过去3天我一直在谷歌搜索。我在这里阅读了回答并尝试了解决方案(当我理解它们时) 我找不到/明白我的错误在哪里。我有最新版本的node / express和所有模块,安装这些最后几天(2015年4月) 我有一个简单的形式(使用getuikit的CSS)
extends layout
block content
<br>
.uk-container
form.uk-form-file(enctype="multipart/form-data")
input.uk-hidden#what_to_do(type="text", name="what_to_do", value="load_files_disk")
button.uk-button Select a file
input#upload-select-phys(type="file")
br
if sessionFlash && sessionFlash.message
div(class=sessionFlash.type)
p <strong>FLASH!</strong> #{ sessionFlash.message }`
我的routes.js有get和post:
router.post('/load_files_disk',function(req, res) {
var fstream;
req.pipe(req.busboy);
req.busboy.on('field', function(fieldname, val) {
console.log('Field [' + fieldname + ']: value: ' + inspect(val));
}); // nothing, doesnot come here
req.busboy.on('file', function (fieldname, file, filename) {
fstream = fs.createWriteStream(__dirname + '/../temp_files/' + filename);
file.pipe(fstream);
fstream.on('close', function () {
});
});
req.busboy.on('finish', function() {
req.flash('success', 'This is a flash message');
console.log('FLASH:' + req.flash('success')); // yes message OK
res.redirect(303,'back');
});
});
router.get('/load_file', function(req, res) {
var d = new Date();
console.log('date is + ', d.toUTCString());
console.log('FLASH2:' + req.flash('success')); // nothing!
res.render('load_file', { user: req.user, sessionFlash: req.flash('success') });
});
我可以毫无问题地加载文件,但我从未看到过字段,控制台上没有任何内容,就像它甚至没有输入代码的那部分一样。 怎么了 ? 正如您所看到的,我还想发送一条flash消息(在我的代码的其他部分没有文件的情况下工作),但是没有传递req.flash。我不知道两者是否相关。 提前感谢您提供的任何提示 - 轻拍
答案 0 :(得分:0)
如果您只是在浏览器中加载这些文件,您的router.js应该在您的服务器上,而不是在您的客户端上。我首先要查找Node上的教程(如https://github.com/workshopper/learnyounode),并完成足够的内容以便能够提供index.html。然后尝试从中提出请求。
如果没有更多的上下文(查看服务器端代码的其余部分,这个问题很难回答?),但我希望它有所帮助。
答案 1 :(得分:0)
我认为问题在于UIkit解析表单并将其发送到服务器的方式。相同的代码(表单,路由等),没有所有UIkit的东西完美地工作。 如果有人这样做并且有解决方案,我很高兴知道,现在我简化了我的表格并让它发挥作用。