DropzoneS3Uploader дает UploadError: 404 после успешного подписанного запроса URL - PullRequest
0 голосов
/ 08 сентября 2018

Я создаю безсерверное приложение React (для разработки используем npm), которое использует DropzoneS3Uploader для загрузки изображений в S3. Я настраиваю его для использования API-шлюза (поддерживаемого Lambda) для запроса подписанного URL-адреса перед загрузкой файла в корзину S3

const uploadOptions = {
		s3Path: '/<folder>/',		
		signingUrl: 'https://<my-api>.eu-west-1.amazonaws.com/Prod/<api>',
		signingUrlMethod: 'POST',
		accept: 'image/*',
		autoUpload: true	
};

Метод рендеринга возвращает компонент следующим образом ...

<div>
		  <DropzoneS3Uploader
			onFinish={this.handleFinishedUpload}
			s3Url='http://<my-bucket>.s3-website-eu-west-1.amazonaws.com'
			upload={uploadOptions}
			/>		
</div>

Когда это выполняется, ему удается сгенерировать подписанный URL в порядке.

URL запроса: https: //.eu-west-1.amazonaws.com/Prod/? ObjectName = & contentType = image% 2Fjpeg Способ запроса: POST Код статуса: 200

{"signed_url":"https://<my-bucket>.eu-west-1.amazonaws.com/<some_image.jpg>?X-Amz-Algorithm=AWS4-HMAC-....X-Amz-Signature=...&X-Amz-SignedHeaders=host"}

Однако из 404 он идет прямо (трассировка стека ниже). Я начинаю задаваться вопросом, пытается ли npm кешировать изображение как временный файл? Какова бы ни была проблема, она не может ссылаться на сервер / образ во время запроса PUT на S3 ...

URL запроса: http://localhost:3000/undefined Способ запроса: PUT Код статуса: 404 Не найдено

http://localhost:3000/undefined 404 (не найдено) ./node_modules/react-dropzone-s3-uploader/node_modules/react-s3-uploader/s3upload.js.S3Upload.uploadToS3 @ s3upload.js: 171 (анонимно) @ s3upload.js: 108 XMLHttpRequest.send (async) ./node_modules/react-dropzone-s3-uploader/node_modules/react-s3-uploader/s3upload.js.S3Upload.executeOnSignedUrl @ s3upload.js: 113 ./node_modules/react-dropzone-s3-uploader/node_modules/react-s3-uploader/s3upload.js.S3Upload.uploadFile @ s3upload.js: 178 (анонимно) @ s3upload.js: 53 ...

В качестве опции загрузки DropzoneS3Uploader есть опция «сервер». Оставьте это поле пустым, и я получаю эту ошибку, заполняю ее кем-то еще, и она заменяет ошибку любым URL-адресом сервера, который я упоминаю. Как уже упоминалось, я планирую использовать этот сервер без сервера, поэтому не упомяну сервер.

Кто-нибудь еще видел это раньше или есть какие-либо предложения?

Я переключаюсь на Dropzone и использую axios, и все работает нормально, так что мне интересно, просто ли DropzoneS3Uploader абстрагирует слишком большую часть кода реализации, чтобы позволить контролировать это поведение?

Спасибо!

...