1

nodejs を使用して複数のファイルを git リポジトリに送信したいと考えています。その移動する単一のファイルのみ。クライアントに送信された後にヘッダーを設定できないなどのスローエラーをループするとき。以下は私のコードです。私が間違っていた場所を教えてください。

    var base64 = require('file-base64');
for (var i in files) {
    console.log('file load: ' + files[i]);
    base64.encode('/opt/zipoutput/' + files[i], function (err, base64String) {
        convertval = base64String;
        var dataObj = {
            "branch": "master",
            "commit_message": "dump message",
            "actions": [
                {
                    "action": "create",
                    "file_path": files[i],
                    "content": convertval,
                    "encoding": "base64"
                }
            ]
        };
        var filesrc  = files;
        var Client = require('node-rest-client').Client;
        var client = new Client()            
        var args = {
            data: dataObj,
            headers: { 'Content-Type': 'application/json', 'PRIVATE-TOKEN': 'xxxxxxxxxxxxxxxx' },
        };
        client.post("https://gitlab.com/api/v4/projects/77/repository/commits", args, function (data, response) {
            fs.rename('/opt/zipoutput/'+files[i], '/opt/sentFiles/'+files[i], function(err) {
                if (err) throw err;
                console.log("args passed:",args);
                 console.log("successfully moved into Sent file dirctory");
            });
            console.log("file send: True");
            res.send("true");

        });

    });
4

1 に答える 1

0

私は前にこれを使用することはありません。あなたがしたことは、すべてのヘッダーとその他のものを設定してから投稿を送信したようです。そして、それらのことをもう一度行います。しかし、エラーによると、ヘッダーをリセットできなかったようです。

2 つの提案があります。 1. ヘッダーをループの外に設定してみてください。つまり、一度だけ設定されます。このようなもの :

var headers = { 'Content-Type': 'application/json', 'PRIVATE-TOKEN': 'xxxxxxxxxxxxxxxx' };
for (var i in files) {
        console.log('file load: ' + files[i]);
        base64.encode('/opt/zipoutput/' + files[i], function (err, base64String) {
            convertval = base64String;
            var dataObj = {
                "branch": "master",
                "commit_message": "dump message",
                "actions": [
                    {
                        "action": "create",
                        "file_path": files[i],
                        "content": convertval,
                        "encoding": "base64"
                    }
                ]
            };
            var filesrc  = files;
            var Client = require('node-rest-client').Client;
            var client = new Client()            
            var args = {
                data: dataObj,
                headers: headers,
            };
            client.post("https://gitlab.com/api/v4/projects/77/repository/commits", args, function (data, response) {
                fs.rename('/opt/zipoutput/'+files[i], '/opt/sentFiles/'+files[i], function(err) {
                    if (err) throw err;
                    console.log("args passed:",args);
                     console.log("successfully moved into Sent file dirctory");
                });
                console.log("file send: True");
                res.send("true");

            });

        });
  1. すべてのファイルを同時に送信します。file_path": <folder_path>,ファイル パスの代わりにフォルダ パスを使用してみてください。それはうまくいくかもしれません。
于 2018-10-16T20:44:15.127 に答える