Dropbox API - файл для чтения и загрузки node.js

1

Я использую API Dropbox для чтения файла из файловой структуры node.js, а затем загружая этот файл в папку с Dropbox.

Файл загружается, но его пустой размер загруженного файла составляет 0 байт

var path = require("path");
var temp_dir = path.join(process.cwd(), 'pdf/');

 if (!fs.existsSync(temp_dir))
    fs.mkdirSync(temp_dir);
    fs.readFile(temp_dir + 'report.pdf', function read(err, data) {
        if (err) {
          throw err;
        }

    fileupload(data);
  });

Код загрузки файла:

function fileupload(name, content) {
     request.put('https://api-content.dropbox.com/1/files_put/auto/my_reports/report.pdf', {
                headers: {
                    Authorization: 'TOKEN HERE',
                    'Content-Type': 'application/pdf'
                },
                body: content
            }, function optionalCallback(err, httpResponse, bodymsg) {
                if (err) {
                    console.log(err);
                }
                else {
                    console.log("File uploaded to dropbox successfully!");
                    fs.unlink(temp_dir + 'report.pdf', function(err) {
                        if (err)
                            throw err;
                        else {
                            console.log("file deleted from server!");
                        }
                    })
                    request.post('https://api.dropboxapi.com/1/shares/auto/MY_reports/report.pdf' + '?short_url=false', {
                        headers: {
                            Authorization: 'TOKEN HERE'
                        }
                    }, function optionalCallback(err, httpResponse, bodymsg) {
                        if (err) {
                            console.log(err);
                        }
                        else {
                            console.log('Shared link 2 ' + JSON.parse(httpResponse.body).url);

                        }
                    });

                }
            });
         }

Загруженный файл в Dropbox:

Изображение 174551

Теги:
express
dropbox-api

2 ответа

0
Лучший ответ

fileupload принимает два параметра: name и content, но вы передаете только один параметр. Это означает, что content не undefined, поэтому вы загружаете пустой файл.

Поскольку вы фактически не используете name, просто удалите этот параметр из определения fileupload:

function fileupload(content) {
  ...

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ

Вы используете Dropbox API v1, который устарел более года назад и вскоре должен быть отключен. Вы должны переключиться на API v2.

  • 0
    Большой! Это сработало. Спасибо за полезную информацию!!
0

Вы можете быстро загрузить файл, используя мою крошечную оболочку apache dropbox v2 (dropbox-v2-api):

const dropboxUploadStream = dropbox({
    resource: 'files/upload',
    parameters: {
        path: '/MY_reports/report.pdf'
    }
}, (err, result) => {
    //upload completed 
});

fs.createReadStream(temp_dir + 'report.pdf').pipe(dropboxUploadStream);
  • 0
    Привет, я пытаюсь использовать вашу библиотеку, но я могу заставить ее работать. Когда я console.log(result) я получаю undefined и файл не загружается. Вы можете помочь?
  • 0
    @Skywalker Пожалуйста, убедитесь: 1. Вы прошли аутентификацию ранее, или 2. Поток действителен
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню