成功签署网址请求后,DropzoneS3Uploader会给出UploadError:404

时间:2018-09-08 20:48:40

标签: javascript reactjs amazon-web-services amazon-s3 react-dropzone

我正在构建一个无服务器的React应用程序(使用npm进行开发),该应用程序使用DropzoneS3Uploader将图像上传到S3。我将其配置为使用API​​网关(由Lambda支持)在将文件上传到S3存储桶之前请求签名的URL

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

render方法继续返回组件,如下所示...

<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进入(下面的stacktrace)。我开始怀疑npm是否尝试将图像缓存为临时文件?无论出现什么问题,在向S3请求PUT期间似乎都无法引用服务器/映像。

请求网址: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(异步) ./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是否只是过多地提取了实现代码以允许控制此行为吗?

谢谢!

0 个答案:

没有答案