javascript - 反应本机错误“`filePath`需要一个字符串值”
问题描述
我有一些代码可以使用 React Native 打开相机并使用 FireBase 保存图像,但它给了我一个错误,说filePath
需要一个字符串值。
这是我的代码:
const openCamera = ()=>{
launchCamera({quality:0.5},(fileobj) =>{
console.log(fileobj)
const uploadTask = storage().ref().child(`/items/${Date.now()}`).putFile(fileobj.uri)
uploadTask.on('state_changed',
(snapshot) => {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
if (progress == 100){alert("Uploaded")}
},
(error) => {
alert("something went wrong")
},
() => {
uploadTask.snapshot.ref.getDownloadURL().then((downloadURL) =>{
console.log(downloadURL)
setImage(downloadURL)
});
}
);
})
}
解决方案
该launchCamera
方法接受将使用响应对象调用的回调。这个响应对象有四个键;didCancel
, errorCode
,errorMessage
和assets
.
assets
是所选媒体的数组,因此您需要获取第一个媒体。
const openCamera = () => {
launchCamera({ quality: 0.5 }, (result) => {
if (result.errorCode || result.didCancel) {
return console.log('You should handle errors or user cancellation!');
}
const img = result.assets[0];
const uploadTask = storage()
.ref()
.child(`/items/${Date.now()}`)
.putFile(img.uri);
uploadTask.on(
'state_changed',
(snapshot) => {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
if (progress == 100) {
alert('Uploaded');
}
},
(error) => {
alert('something went wrong');
},
() => {
uploadTask.snapshot.ref.getDownloadURL().then((downloadURL) => {
console.log(downloadURL);
setImage(downloadURL);
});
},
);
});
};
推荐阅读
- r - 在flexdashboard中离开submitButton时如何使用actionButton?
- logic - 我将如何着手将其翻译为我的程序的喇叭形式?(逻辑)
- sql - 提取 map(varchar, array(varchar)) - Hive SQL
- javascript - 在 CSS 中相当于 :active 的 JavaScript
- python - kivy 应用可以在电脑上运行,但不能在智能手机上运行
- jar - 带有外部 JAR 的项目在本地运行良好,但在部署到 Openshift 时却不行
- php - Bref PHP 将会话存储在 redis 中但无法读取
- node.js - grpc 使用了错误的 IP 地址
- asp.net - 从控制器发送日期值以创建视图
- shopify - 使用 API 的类别和子类别 - 无头