Двоичные данные в запросе nodejs

1

Я пытаюсь загрузить файл в dropbox throug nodeJS. Этот запрос CURL работает.

curl -X POST https://content.dropboxapi.com/2/files/upload \
--header "Authorization: Bearer myToken" \
--header "Dropbox-API-Arg: {\"path\": \"/Homework/math/Matrices.txt\",\"mode\": \"add\",\"autorename\": true,\"mute\": false}" \
--header "Content-Type: application/octet-stream" \
--data-binary @fileName

Я не знаю, как перевести его в javascript-код. Вот что я сделал до сих пор:

    var request = require('request')
    var headers = {
        "Authorization": "Bearer " + dropboxToken,
        "Dropbox-API-Arg": {
                            "path": "/"+fileName, //nome sul drive
                            "mode": "add",
                            "autorename": true,
                            "mute": false
                            },
        "Content-Type": "application/octet-stream"
    }
    var options = {
        url: 'https://content.dropboxapi.com/2/files/upload',
        method: 'POST',
        headers: headers,
    }
    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        }
    });

Как включить data-binary параметр данных в этот запрос, чтобы выбрать файл для загрузки?

Благодарю.

Теги:
dropbox

2 ответа

1

вы можете создать поток чтения, а затем передать его для запроса с вашими текущими заголовками и параметрами like-

fs.createReadStream('/path/to/youfile').pipe(request.post(options).on('end', (done) => { console.log('success') }));
0

Во-первых, если вы пытаетесь интегрироваться с API Dropbox в JavaScript, мы рекомендуем использовать официальный Dropbox API v2 JavaScript SDK, поскольку он выполнит большую часть работы для вас:

https://github.com/dropbox/dropbox-sdk-js

В противном случае, если вы не хотите использовать SDK, вы можете сами сделать запросы. В этом случае параметр --data-binary является параметром curl для подачи данных для curl запроса. curl затем берет эти данные и помещает их в тело запроса, что является правильным способом предоставить данные файла для конечной точки стиля "контент-загрузка" Dropbox API v2, например /2/files/upload.

Итак, вы должны проверить документацию для HTTP-клиента, который вы используете, для получения информации о том, как установить тело запроса. Похоже, вы используете модуль узла request, который, как представляется, принимает опцию body, где вы можете поместить данные запроса.

  • 0
    Я пытался вставить тело, как это var options = { url: 'https://content.dropboxapi.com/2/files/upload', headers: headers, body: '@'+'/myFile.txt' } но это не работает
  • 0
    Синтаксис @ - это просто способ указать локальный файл для curl . Это предположительно не относится к модулю запроса узла. Из документации для этого вы должны предоставить данные как « Buffer , String или ReadStream ».

Ещё вопросы

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