如何修复dropbox node api error 400 Request Header或Cookie Too Large

问题描述 投票:4回答:1

我正在使用dropbox for node"dropbox": "^4.0.17"并尝试上传文件。这是示例代码:

require('dotenv').config();
const fs = require('fs');
const fetch = require('isomorphic-fetch'); 
const Dropbox = require('dropbox').Dropbox;
const config = { accessToken: process.env.DROPBOX_ACCESS_TOKEN, fetch: fetch };
const dbx = new Dropbox(config);

const fileContent = fs.readFileSync('full path to some pdf files');

dbx.filesUpload(fileContent)
    .then((response) => {
        console.log('response', response);
    })
    .catch((err) => {
        console.log('error', err);
    });

以下是回复:

{ error: '<html>\r\n<head><title>400 Request Header Or Cookie Too Large</title></head>\r\n<body>\r\n<center><h1>400 Bad Request</h1></center>\r\n<center>Request Header Or Cookie Too Large</center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n',
  response:
   Body {
     url: 'https://content.dropboxapi.com/2/files/upload',
     status: 400,
     statusText: 'Bad Request',
     headers: Headers { _headers: [Object] },
     ok: false,
     body:
      PassThrough {
        _readableState: [ReadableState],
        readable: false,
        domain: null,
        _events: [Object],
        _eventsCount: 4,
        _maxListeners: undefined,
        _writableState: [WritableState],
        writable: false,
        allowHalfOpen: true,
        _transformState: [Object] },
     bodyUsed: true,
     size: 0,
     timeout: 0,
     _raw:
      [ <Buffer 3c 68 74 6d 6c 3e 0d 0a 3c 68 65 61 64 3e 3c 74 69 74 6c 65 3e 34 30 30 20 52 65 71 75 65 73 74 20 48 65 61 64 65 72 20 4f 72 20 43 6f 6f 6b 69 65 20 ... > ],
     _abort: false,
     _bytes: 226 },
  status: 400 }
node.js dropbox dropbox-api dropbox-sdk
1个回答
2
投票

传递给filesUpload的参数应该是FilesCommitInfo,而不仅仅是文件内容。你可以找到an example of what it should look like here

因此,对于您的代码,而不是:

dbx.filesUpload(fileContent)

你应该这样:

dbx.filesUpload({ path: '/some/destination/file/path/and/name.ext', contents: fileContent})

(您目前拥有它的方式最终会尝试将整个文件内容作为API调用参数发送,这些参数恰好在标头中发送,从而导致出现错误。)

© www.soinside.com 2019 - 2024. All rights reserved.