2

我正在使用sails.js 来建立一个网站。我有一个名为timeline. 它有一些文本字段以及一个名为pictures. 每个timeline可以有多个pictures. 我想在用户单击时立即更新所有这些字段save。我正在使用 JQuery 文件上传器来帮助多文件上传。

问题是,对于每张上传的图片,JQuery 文件上传调用我的后端文件上传服务一次。我只需要更新一次其他文本字段,并且需要在pictures创建记录之前更新它们,因为每张图片都需要有一个timeline与之关联的 ID。

异步任务是要走的路吗?我不这么认为,因为 JQuery 文件上传器多次调用我的后端,我认为我不能使用异步并行推送任务和更新其他字段。如果只是一次上传调用,我本可以做到的。

我正在考虑保留两个提交按钮 - 一个用于文本字段,一个用于文件上传,但真的不喜欢这种方式。如果有人在这方面指导我,那就太好了。

4

3 回答 3

2

如果我正确理解您的问题,我认为您需要检查第 112 行附近的文件 jquery.fileupload.js 尝试更改 singleFileUploads: false,

于 2015-08-12T12:34:25.763 回答
1

设置SingleFileUploads为 false 对 JQuery 文件上传器没有多大帮助,因为上面讨论的似乎存在错误。所以我把那件事恢复为真。

我将输入分成两种单独的形式——一种用于文本字段输入,另一种用于文件(通过 JQuery 文件上传器)。对于文本字段表单,我保留了一个用户可以单击的可见按钮。对于另一个,我隐藏了按钮。因此,一旦用户单击可见按钮,我只提交文本输入并在后端创建数据库记录(这是使用 AJAX 调用完成的),在AJAX 调用字段中,如果文件数更多success,我将隐藏按钮.click()大于 0。

于 2015-08-16T08:47:24.717 回答
1
var counter = 0;
var allFilesObj = Array();

req.file('files[]') .upload({

            saveAs: function (__newFileStream, cb) { 
                var fileObj = {};

                var extension = __newFileStream.filename.split('.').pop();
                var original_name = __newFileStream.filename;


                fileObj.original_name = original_name;
                fileObj.name = "Thename";
                fileObj.ext = extension;
                fileObj.path = uploadpath+"The name"+ "." + extension;
                counter++;
                allFilesObj.push(fileObj);
                cb(null, uploadpath+"The name"+ "." + extension;);
            }
        }, function whenDone(err, uploadedFiles) {
            if (err) {
                console.log("ERROR");
                console.log(err);
                return res.negotiate(err);

            }

            else {

                    async.each(allFilesObj, function (row, done) {
                        var index = allFilesObj.indexOf(row);
                        row.col1 = req.param('col1');
                        row.col2 = req.param('col2');
                       row.col3 = req.param('col3');

                        done();
                    }, function (err) {

                        if (err) {
                            res.send("Error 500 , complete object array Defunct");

                        }



                        //DATABASE INSERT

                        YourModel.create(allFilesObj, function batchFileCreated(err, user) {

                            if (err) {
                                return res.send(err);
                            }
                            console.log("done");

// req.session.messages['success'][0] = "文件上传成功"; // return res.redirect(req.get('referer'),{files: uploadFiles,textParams: req.params.all()}); 返回 res.ok({ 文件:uploadedFiles, textParams: req.params.all() }); });

                    });



                } 
            }

        });
于 2015-08-12T17:31:59.470 回答