我正在尝试从浏览器上传文件,但它根本不起作用。
我的存储桶 CORS 配置是:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
在我的代码中,我发送了这个:
xhr.open('PUT', "http://upload.test.s3.amazonaws.com/" + uploadFile.get("dest") +'?' + "partNumber=" + (part + 1) + "&" + "uploadId=" + uploadFile.get("uploadId"), true);
xhr.setRequestHeader("Authorization", uploadFile.get("authorization"));
xhr.setRequestHeader("x-amz-date", uploadFile.get("date"));
xhr.setRequestHeader("Content-Type", uploadFile.get("rawFile").type);
xhr.setRequestHeader("x-amz-acl", "public-read");
xhr.send(chunk);
Ps:uploadFile 有一些属性,例如来自服务器的授权密钥和uploadId。
当上传开始时,我通过 OPTIONS 请求,但 Put 请求在几秒钟后中止(通常在发送一些内容百分比后 4-5 秒)。不幸的是,它在没有反馈的情况下中止。有谁知道会发生什么?
谢谢!
编辑:基本上我使用https://github.com/LearnBoost/knox从 Multipart Upload 中获取 UploadId(如果我使用服务器进行整个上传操作,它可以工作)