我正在学习本教程:
https://devcenter.heroku.com/articles/s3-upload-node
使用NodeJS和Jquery将文件上传到Amazon s3。它适用于小图像和文件。但是它会产生XHR连接重置错误。
我的CORS配置看起来完全像这样:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我错过了什么吗?
答案 0 :(得分:2)
如果您按照heroku文档中的说明进行操作,则会看到一行
const s3Params = {
Bucket: S3_BUCKET,
Key: fileName,
Expires: 60,
ContentType: fileType,
ACL: 'public-read'};
您可以在this aws documentaion中看到,Expires元数据表示使预签名URL操作失效的秒数。 这里给出的是60,等于1分钟。在60秒内上传大型文件。是不可能的。
FIX :尝试从s3Params中删除过期的元数据或增加其值。 默认情况下,预签名的网址会在15分钟后过期。
现在您的代码将如下所示:
const s3Params = {
Bucket: S3_BUCKET,
Key: fileName,
ContentType: fileType,
ACL: 'public-read'};