【发布时间】:2020-08-05 14:21:17
【问题描述】:
在将 React Native 版本更新到最新的 0.63.2 并尝试将图像上传到 S3 存储桶后,XHR 返回错误 Stream Closed 图像上传在 0.61.5 版本下工作正常
代码
uploadProfile({ variables: { filetype: mime } }).then(
({ data: { uploadUserProfile } }) => {
const { presignedUrl, url } = uploadUserProfile;
console.log('presignedUrl', { presignedUrl, url });
// uploading to s3 bucket
const xhr = new XMLHttpRequest();
xhr.open('PUT', presignedUrl);
xhr.onreadystatechange = async function () {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
updateAccount({
variables: {
data: {
profile: url,
},
},
});
} else {
if (/Request has expired/g.test(xhr.response))
Toast({ message: 'slow network connection' });
else {
console.log({
response: xhr.response,
responseText: xhr.responseText,
status: xhr.status,
});
Toast({ message: 'internal server error' });
await report({
error: {
response: xhr.response,
responseText: xhr.responseText,
status: xhr.status,
},
}); // reporting error
}
}
}
};
xhr.setRequestHeader('Content-Type', mime);
xhr.send({ uri: path, type: mime });
setLoading(false);
},
);
当用户想先上传个人资料图片时,应用程序向服务器发送请求并返回预签名的 URL,然后从客户端上传应用程序的工作方式。
【问题讨论】:
标签: reactjs amazon-web-services react-native amazon-s3 xmlhttprequest