evaporate.js 未从移动设备发送 to_sign
evaporate.js not sending to_sign from mobile device
我正在开发一款包含网络和移动 ui 组件的应用程序。我们正在使用 evaporate.js 调用一个端点,该端点将 return 预签名 url 用于将块上传到 aws 存储桶。这个概念在 React 中使用时有效,它发送 to_sign
查询字符串参数来创建 pre-signed
url。出于某种原因,当此代码 运行 来自 React Native 时, to_sign
查询字符串值不会传递到端点。什么可能阻止 to_sign
参数从 evaporate 传递,同样的代码正在为 React 应用程序工作?这是我们从 React Native 调用的代码:
const uploader = Evaporate.create({
signerUrl: config.SIGNER_URL,
aws_key: config.AWS_KEY,
bucket: config.BUCKET,
awsRegion: config.AWS_REGION,
cloudfront: true,
xhrWithCredentials: true,
computeContentMd5: true,
cryptoMd5Method: (d) => btoa(sparkMD5.ArrayBuffer.hash(d, true)),
cryptoHexEncodedHash256: sha256,
});
const uploadFile = (file, cb) => {
setLoading(true);
setUploadingError("");
let newName = uuidv4();
let extension = file.name.split(".");
uploader
.then((evaporate) => {
evaporate
.add({
file,
name: newName + "." + extension[2],
})
.then((res, err) => {
if (res) {
cb(res);
setLoading(false);
} else if (err) {
setUploadingError("Something went wrong");
setLoading(false);
}
});
})
.catch((err) => {
setUploadingError("Something went wrong");
setLoading(false);
});
};
不确定这是否可以达到,但移动版本不提供 CORS 的 url,而不是 CORS s3 管理屏幕上设置的 url,所以这可能是CORS 问题?
我怀疑这是因为 btoa 在 react-native 中不起作用。因为 react-native
在浏览器中使用不同的 js 引擎。有些js代码在浏览器中是可以执行的,但是在rn中是不行的。尝试自己实现btoa。
有个类似的问题
我正在开发一款包含网络和移动 ui 组件的应用程序。我们正在使用 evaporate.js 调用一个端点,该端点将 return 预签名 url 用于将块上传到 aws 存储桶。这个概念在 React 中使用时有效,它发送 to_sign
查询字符串参数来创建 pre-signed
url。出于某种原因,当此代码 运行 来自 React Native 时, to_sign
查询字符串值不会传递到端点。什么可能阻止 to_sign
参数从 evaporate 传递,同样的代码正在为 React 应用程序工作?这是我们从 React Native 调用的代码:
const uploader = Evaporate.create({
signerUrl: config.SIGNER_URL,
aws_key: config.AWS_KEY,
bucket: config.BUCKET,
awsRegion: config.AWS_REGION,
cloudfront: true,
xhrWithCredentials: true,
computeContentMd5: true,
cryptoMd5Method: (d) => btoa(sparkMD5.ArrayBuffer.hash(d, true)),
cryptoHexEncodedHash256: sha256,
});
const uploadFile = (file, cb) => {
setLoading(true);
setUploadingError("");
let newName = uuidv4();
let extension = file.name.split(".");
uploader
.then((evaporate) => {
evaporate
.add({
file,
name: newName + "." + extension[2],
})
.then((res, err) => {
if (res) {
cb(res);
setLoading(false);
} else if (err) {
setUploadingError("Something went wrong");
setLoading(false);
}
});
})
.catch((err) => {
setUploadingError("Something went wrong");
setLoading(false);
});
};
不确定这是否可以达到,但移动版本不提供 CORS 的 url,而不是 CORS s3 管理屏幕上设置的 url,所以这可能是CORS 问题?
我怀疑这是因为 btoa 在 react-native 中不起作用。因为 react-native
在浏览器中使用不同的 js 引擎。有些js代码在浏览器中是可以执行的,但是在rn中是不行的。尝试自己实现btoa。
有个类似的问题