反应本机错误“`filePath`需要一个字符串值”
Posted
技术标签:
【中文标题】反应本机错误“`filePath`需要一个字符串值”【英文标题】:Error in react native "`filePath` expects a string value" 【发布时间】:2021-10-04 08:48:29 【问题描述】:我有一些代码可以使用 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)
);
);
)
【问题讨论】:
【参考方案1】:我看到了您的问题,并为您提供了解决方案。
我不知道为什么,但请尝试像这样使用一次:
fileobj.assets[0].uri
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:launchCamera
方法接受将使用响应对象调用的回调。这个response object 有四个键; 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);
);
,
);
);
;
【讨论】:
以上是关于反应本机错误“`filePath`需要一个字符串值”的主要内容,如果未能解决你的问题,请参考以下文章