1

我面临着我认为在enctype="multipart/form-data"ExpressJS 中使用表单类型的常见问题。如果没有中间件,req.body(或 bodyParser)将无法处理这种表单类型,因此我会根据请求null为我的字段发送值。POST我的表单有一个文件上传部分,这就是我使用的原因multipart,我使用multerandmulter-s3模块来处理上传到 s3 存储桶的图像,但不知道如何使用multer或其他一些模块来帮助我存储字段值到我的 Mysql(Sequelize ORM)数据库。任何人都可以提供有关是否multer适合用于此类表单上传的模块的指导,并指出我可以req.body使用某些特定于模块的方法替换掉的文档吗?

我的表格是什么样的

<form action="/app/post/create" method="post" enctype="multipart/form-data">
   <label for="discovery">Discovery:</label>
   <textarea id="discovery-text-field" name="discovery"></textarea>
   </br>
   <label for="report-link">Link to Report:</label>
   <input type="textarea" name="reportLink">
   <br />
   <label for="file-attachment">File Attachment:</label>
   <input type="file" id="file-input" name="fileUpload[]" multiple>
</form> 

路由:

appRoutes.route('app/post/create')

.post(function(req, res){

        models.Post.create({
            discovery: req.body.discovery,
            reportLink: req.body.reportLink,
            userId: req.user.userId     
        }).then(function(){
            req.flash('info', 'Post was successfully created.');
            res.redirect('/app');
        });
    });
4

1 回答 1

0

我不确定您是否正在尝试使用 AJAX 发送数据,但我无法让 AJAX 以让 Multer 高兴的方式正确发送多格式数据。这是我在 Express 和 Multer 中使用的。以下是一些可用于将表单值上传到服务器的 JQuery。然后,您可以随意操作您的值并将它们存储在服务器端。

<script language="JavaScript">
    $(document).ready(function () {
        $(".submitButton").click(function () {
            var values = {
                fields: $("#IDs").val()
            };
            var http = new XMLHttpRequest();
            http.open("POST", '/express/route', true);
            // stuff into a form
            var form = new FormData();
            form.append('values', JSON.stringify(values));
            // send data to server
            http.send(form);
        });
    });
</script>

服务器端

app.post('/express/route', upload.array(), function (req, res, next) {
    console.log(req.body);
}

现在你有你的(我称之为单一形式或非多形式)值服务器端。

我目前使用 Mongo 而不是 SQL,所以我能提供帮助。我确定您可以安装一些软件包(我会在 npmjs.com 中搜索 sql),这将允许您与 SQL 交互,但 Mongo 现在似乎在 NodeJS 中很流行。这是我在构建 MEAN 堆栈时用作参考的链接:http: //www.dotnetcurry.com/nodejs/1032/nodejs-apps-in-visual-studio-mean-stack MEAN 堆栈 如果您有 Visual 也很有用Studio 并希望将 NPM 内置到 VS 中。

于 2017-03-13T07:04:12.157 回答