Cloudconvert — неверная ошибка подписи при использовании запроса-обещания для загрузки через API

Я пытаюсь загрузить PDF-файл через API-интерфейс cloudconvert, используя nodeJS и запрос-обещание. Запрос на получение URL-адреса загрузки и параметров выполнен успешно, но когда я пытаюсь передать данные, я получаю ошибку 401 - "FormPost: Invalid Signature", хотя я использую подпись, возвращенную из первого запроса.

...
pdfToPng: function(pdfBuffer, apiKey) {
    return new Promise(async (resolve, reject) => {
      const cloudConvert = new CloudConvert(apiKey);
      let response = JSON.parse(
        await request.post('https://api.cloudconvert.com/v2/import/upload', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${apiKey}`,
          'Content-type': 'application/json',
        },
      }));
      let fileUrl = response.data.result.form.url;
      let params = response.data.result.form.parameters;
      let fileUpload = await request.post({
        url: fileUrl,
        formData: {
          "expires": params.expires,
          "max_file_count": params.max_file_count,
          "max_file_size": params.max_file_size,
          "signature": params.signature,
          "file": {
            value: pdfBuffer.toString('base64'),
            options: {
              filename: 'invoice.pdf',
              contentType: 'application/pdf'
            }
          }
        }
      }).catch((err) => {
        console.log('ERROR UPLOADING FILE: ', err); //<-- 401 Error here
        reject(err);
      })
      console.log('FILE UPLOAD RESPONSE: ', fileUpload);
...

person sheltam264    schedule 08.10.2020    source источник


Ответы (1)


Вам нужно передать все параметры response.data.result.form.parameters в formData, а не только именованные:

  let fileUpload = await request.post({
    url: fileUrl,
    formData: {
      ...response.data.result.form.parameters,
      "file": {
        value: pdfBuffer.toString('base64'),
        options: {
          filename: 'invoice.pdf',
          contentType: 'application/pdf'
        }
      }
    }
person monday    schedule 09.10.2020