Sails.js 表单帖子未提交任何数据
Posted
技术标签:
【中文标题】Sails.js 表单帖子未提交任何数据【英文标题】:Sails.js form post not submitting any data 【发布时间】:2015-06-28 04:00:36 【问题描述】:最近我在发布表单时遇到了一个不寻常的问题。当没有附件或附件图像文件大小小于 100kb 时,表单发布工作正常。但是,当我尝试上传大于 100kb 的文件时,表单中没有任何元素被发布/提交。当我console.log()
时,它给出的值未定义。我不明白是什么导致了问题。控制台屏幕上未显示任何错误。谁能帮忙解决这个问题?
var name = req.param('name');
console.log(name);
我得到的结果是undefined
。
我在 Windows 8.1 上使用sails v0.10.5。我使用 postgres 作为我的数据库。
【问题讨论】:
你确定req.param('name');
正在返回一个值吗?它也必须是一个字符串值,所以你可以尝试做name.toString();
不,它没有返回值。上传大小超过 100kb 的附件时,不会提交表单中的任何内容。 console.log(req.param('name') 也返回 undefined。
你在使用 FormData 吗?
我正在使用 enctype="multipart/form-data"
【参考方案1】:
使用 skipper,您必须将所有输入文件放在表单末尾。 否则它可能会出错。
【讨论】:
是的,是船长问题。在我的表单中,我有许多与之相关的文本字段和附件。因此,使用船长无法正常工作。所以我使用jquery文件上传上传文件和所有文本字段的普通表单提交。任何方式感谢您的回复。 这是一个讨厌的。我在使用表单数据和 ajax 时遇到了同样的问题。将所有文件附加到最后解决了问题!非常感谢您节省了我的时间。 如果我们有超过 1 个文件字段,它可能仍然无法正常工作 这个问题解决了吗?【参考方案2】:有同样的问题,原来输入的顺序很重要,就在github skipper 页面上说
重要的是要认识到上述好处(文本参数)依赖于一个关键的简化假设:用户代理在多部分 HTTP 请求正文中的第一个文件参数之前发送任何文本参数。例如,在 html 表单中,这意味着将所有标签放在其他输入之后。如果您不想以这种方式布置表单,则需要使用 AJAX 来提交它
【讨论】:
【参考方案3】:req.param
方法用于获取url参数、body参数、查询参数。 (reference)
如果你使用multipart/form-data
上传文件,Sails使用skipper解析数据,你可以像下面这样简单地获取文件
req.file('name').upload(function (err, uploadedFiles)
if (err) return res.send(500, err);
return res.send(200, uploadedFiles);
);
【讨论】:
文件上传工作正常,没有问题。我遇到的唯一问题是当我上传大小高于 100kb 的图像时,没有提交其他表单元素。但是当我上传大小小于 100kb 的图像时,表单中的每个元素都与图像一起提交。这听起来很愚蠢,但我正面临这个问题。而且不知道出了什么问题。 很有趣,你能提供一个小sn-p吗?我想找出问题 这里是表格:<form method="post" action="testin" enctype="multipart/form-data" > <input type="file" name="file"> <input type="text" name="name"> <textarea name="test" class="form-control" ></textarea> <input type="submit" value="submit" > </form>
testin :function(req,res) req.file('file').upload( saveAs: function(file, cb) cb(null, file.filename); ,dirname: "../../assets/Questions/" ,function (err, files) console.log(files); res.json( body:req.body, name:req.param('name'), text:req.param('test') ) ) ,
【参考方案4】:
最好使用 blueimp jquery 文件上传插件。它有多种功能可以帮助你。
【讨论】:
我使用 blueimp fileupload 上传图片。您的回复很有帮助。【参考方案5】:我建议查看sails....的官方文件上传文档。
http://sailsjs.org/#!/documentation/concepts/File-Uploads
我按照这些步骤操作,它对我有用(在sails v 0.11 上)。也许您在此过程中错过了什么?
【讨论】:
文件上传不是我的问题。这是由于船长没有提交我的表单数据。以上是关于Sails.js 表单帖子未提交任何数据的主要内容,如果未能解决你的问题,请参考以下文章