Javascript Firebase存储-上载带有React本机的图像,加载预览时出错
这是我用来将图像上传到firebase存储的代码Javascript Firebase存储-上载带有React本机的图像,加载预览时出错,javascript,firebase,react-native,expo,firebase-storage,Javascript,Firebase,React Native,Expo,Firebase Storage,这是我用来将图像上传到firebase存储的代码 const filename = image.substring(image.lastIndexOf('/') + 1); const uploadUri = Platform.OS === 'ios' ? image.replace('file://', '') : image var metadata = { contentType: 'image/jpeg', }; const task = firebase.storage().ref
const filename = image.substring(image.lastIndexOf('/') + 1);
const uploadUri = Platform.OS === 'ios' ? image.replace('file://', '') : image
var metadata = {
contentType: 'image/jpeg',
};
const task = firebase.storage().ref().put(uploadUri, metadata)
try {
await task
} catch(err) {
console.log(err)
}
但当我检查firebase控制台时,它显示加载预览时出错,并且图像的文件大小为9B。有什么我遗漏的吗。
我正在使用Expo管理的Expo图像选择器选择图像。将其更改为此
const filename = image.substring(image.lastIndexOf('/') + 1);
const uploadUri = Platform.OS === 'ios' ? image.replace('file://', '') : image
let formData = new FormData();
formData.append("image", {
name: filename,
type: 'image/jpeg',
uri: uploadUri
})
var metadata = {
contentType: 'image/jpeg',
};
const task = firebase.storage().ref().put(formData, metadata)
try {
await task
} catch(err) {
console.log(err)
}
我找到了一种方法,我必须创建一个blob,然后将该blob上传到firebase
const filename = image.substring(image.lastIndexOf('/') + 1);
const blob = await new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = function() {
resolve(xhr.response);
};
xhr.onerror = function() {
reject(new TypeError("Network request failed"));
};
xhr.responseType = "blob";
xhr.open("GET", image, true);
xhr.send(null);
});
const ref = firebase
.storage()
.ref()
.child(filename);
const task = ref.put(blob, { contentType: 'image/jpeg' });
task.on('state_changed',
(snapshot) => {
console.log(snapshot.totalBytes)
},
(err) => {
console.log(err)
},
() => {
task.snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log(downloadURL);
});
})
您在从
expo图像采集器
中提取图像时有任何问题吗。我的应用程序将在我拾取图像后立即重新启动。不,expo image picker工作正常,加载预览时仍然出错,文件大小为9B