反应本机错误“`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 有四个键; didCancelerrorCodeerrorMessageassets

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`需要一个字符串值”的主要内容,如果未能解决你的问题,请参考以下文章

反应本机语法错误“,”

使用反应查询反应本机使用效果 es-lint 错误

反应本机相机记录异步启动失败错误

未定义不是本机反应中的对象错误

添加正文时在 POST 请求中反应本机网络错误

打字稿和本机反应的 ForwardRef 错误