Forms 当化身为图像/png时,在Sails.js中创建具有化身的用户失败

Forms 当化身为图像/png时,在Sails.js中创建具有化身的用户失败,forms,api,upload,sails.js,Forms,Api,Upload,Sails.js,我使用sailsgenerate生成并实现了一个名为User的新api 命令。当我尝试上传svg或jpg图像时,它工作得非常好,文件被上传,用户在DB中创建。但是,当我尝试使用png文件时,保存到DB失败!虽然png文件会按预期上传,但用户不会被保存。调试时,对象参数除“公司”字段外为空 生成api $ sails generate api user 用户控制器(api/Controller/UserController.js) 我的视图/user/new.ejs: <form i

我使用
sailsgenerate生成并实现了一个名为
User
的新api
命令。当我尝试上传svg或jpg图像时,它工作得非常好,文件被上传,用户在DB中创建。但是,当我尝试使用png文件时,保存到DB失败!虽然png文件会按预期上传,但用户不会被保存。调试时,对象参数除“公司”字段外为空

生成api

$ sails generate api user   
用户控制器(api/Controller/UserController.js)

我的视图/user/new.ejs:

<form id="register-form" action="/user/create" method="post" enctype="multipart/form-data">

    <input id="icon_prefix" type="text" name="company" class="validate">
    <input name="avatar" type="file">
    <input class="file-path validate" type="text">
    <input id="icon_prefix" type="text" name="first_name" class="validate">
    <input id="icon_prefix" type="text" name="last_name" class="validate">
    <input id="icon_telephone" type="tel" name="phone"
    <input id="icon_mail" type="email" name="email" class="validate" required="" aria-required="true">
    <input name="type" value="Auftraggeber" type="radio" id="auftraggeber" checked/>
    <input name="type" value="Auftragnehmer" type="radio" id="auftragnehmer" disabled/>
    <input id="password" type="password" name="password" pattern=".{6,}" title="6 characters minimum"
    <input id="confirmation" type="password" class="validate">
    <input type="hidden" value="<%= _csrf %>">
    <input type="checkbox" id="accept"/>
    <input type="checkbox" id="not_robot"/>
    <button class="btn-large waves-effect waves-light" type="submit">Submit
    </button>
</form>

您可以使用skipper包处理不同类型的图像

在终端中运行此命令

npm install skipper --save
在你的控制器
app的顶部使用(require('skipper')()

现在你可以使用这个软件包了

req.file('image').upload({
  // ...any other options here...
}, ...);

我搜索了两个多星期后发现:

您不必安装skipper并要求('skipper')=>Sails随skipper自动提供!也不要把它作为一项政策,它不会起作用(对我来说不是)


对于包含文本输入和文件输入的多部分/表单数据表单,您需要注意的是:html表单中输入字段的顺序很重要!将文本输入字段放在html表单的顶部,文件输入字段放在底部。

我可以测试它:错误:无法加载挂钩(
控制器)
)!错误:ReferenceError:未定义应用程序。这不是sails使用app.use()=>的方式,而是我将其添加到我的config/policies.js:'*':require('skipper')(),但它根本不起作用。其加载和加载,对象参数再次为空。你曾经与sails.js合作过吗?上传部分+在数据库中保存数据对你有用吗?非常感谢。
npm install skipper --save
req.file('image').upload({
  // ...any other options here...
}, ...);