Не удается загрузить файл в пространства DigitalOcean, используя ACL в качестве общедоступного для чтения с использованием подписанного URL-адреса POST?

В основном это тот же вопрос, что и этот, но с использованием POST вместо PUT. Используя POST, я могу добавить другие условия, такие как ограничение размера файла, ограничение типа содержимого и т. Д.

import { createPresignedPost } from '@aws-sdk/s3-presigned-post';

// client S3Client instance from AWS SDK v3.
const url = await createPresignedPost(client, {
  Bucket: 'myhpbucket',
  Key: 'accordion.gif',
  Conditions: [
    ['eq', '$acl', 'public-read'],
    ['starts-with', '$Content-Type', 'image/'],
    ['content-length-range', 1, 512 * 1024]  // 512KB size restriction
  ],
  Expires: 3 * 3600 // 3 hour expiry
});

Этот ответ похож на этот:

{
  url: 'https://fra1.digitaloceanspaces.com/myhpbucket',
  fields: {
    bucket: 'myhpbucket',
    'X-Amz-Algorithm': 'AWS4-HMAC-SHA256',
    'X-Amz-Credential': 'some-value',
    'X-Amz-Date': '20210517T125438Z',
    key: 'accordion.gif',
    Policy: 'policy-id',
    'X-Amz-Signature': 'signature'
  }
}

Я использую этот ответ во внешнем интерфейсе, используя XHR2.

const data = new FormData();

data.append('bucket', 'myhpbucket');
data.append('key', 'accordion.gif');
data.append('Policy', 'policy-id');
data.append('X-Amz-Date', '20210517T125438Z');
data.append('X-Amz-Signature', 'signature');
data.append('X-Amz-Algorithm', 'AWS4-HMAC-SHA256');
data.append('X-Amz-Credential', 'some-value');

// Required for satisfying condition
data.append('Content-Type', 'image/gif');

// Added file as last key of the form data
data.append('file', fileInput.files[0], '/C:/Users/patilh6/Desktop/accordion.gif');

const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://fra1.digitaloceanspaces.com/precommit');

// ACL request header to satisfy condition
xhr.setRequestHeader('x-amz-acl', 'public-read');

xhr.send(data);

Я пробовал с другими условиями, удаляя ACL, и загрузка работала безупречно. Я что-то упустил с условием ACL?


person Harshal Patil    schedule 17.05.2021    source источник