Как получить статус прогресса при загрузке файлов на Google Диск с помощью NodeJs? - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь получить значения статуса выполнения при загрузке файлов на Google Drive с помощью nodeJs.

controller.js

exports.post = (req, res) => {
//file content is stored in req as a stream 
// 1qP5tGUFibPNaOxPpMbCQNbVzrDdAgBD is the folder ID (in google drive) 
  googleDrive.makeFile("file.txt","1qP5tGUFibPNaOxPpMbCQNbVzrDdAgBD",req);

};

googleDrive.js

...
    makeFile: function (fileName, root,req) {

        var fileMetadata = {
            'name': fileName,
            'mimeType': 'text/plain',
            'parents': [root]
        };

        var media = {
            mimeType: 'text/plain',
            body: req
        };

        var r = drive.files.create({
            auth: jwToken,
            resource: fileMetadata,
            media: media,
            fields: 'id'
        }, function (err, file) {
            if (err) {
                // Handle error
                console.error(err);
            } else {
                // r => undefined
                console.log("Uploaded: " + r);
            }
        });


    },
...

iперешел по этой ссылке , но получил всегда неопределенное значение

1 Ответ

0 голосов
/ 27 августа 2018

Как насчет этой модификации?

Точка модификации:

  • Использовано onUploadProgress.

Модифицированный скрипт:

makeFile: function (fileName, root,req) {
    var fileMetadata = {
        'name': fileName,
        'mimeType': 'text/plain',
        'parents': [root]
    };

    var media = {
        mimeType: 'text/plain',
        body: req
    };

    var r = drive.files.create({
        auth: jwToken,
        resource: fileMetadata,
        media: media,
        fields: 'id'
    }, {
      onUploadProgress: function(e) {
        process.stdout.clearLine();
        process.stdout.cursorTo(0);
        process.stdout.write(e.bytesRead.toString());
      },
    }, function (err, file) {
        if (err) {
            // Handle error
            console.error(err);
        } else {
            console.log("Uploaded: " + file.data.id);
        }
    });
},

Примечание:

  • Если вы хотите показать прогрессию как «%», используйте размер файла.
  • Было подтверждено, что этот скрипт работает по адресу googleapis@33.0.0.

Ссылки:

В моем окружении я использую скрипт, как указано выше. Но если это не сработало в вашей среде, и если я неправильно понял ваш вопрос, извините.

...