【问题标题】:Expo image picker cannot show image on web that uploaded from Mobile due to different url in React Native由于 React Native 中的 url 不同,Expo 图像选择器无法在 Web 上显示从 Mobile 上传的图像
【发布时间】:2022-01-04 14:32:50
【问题描述】:

我从网络帐户上传了图片,此图片也显示在移动设备上,但是当我从移动设备上传图片时,它无法在网络或任何其他移动设备上显示

因为在数据库中 web 图像 uri 是可读的,但移动图像 uri 不可读我的图像选择器代码

const pickImage = async () => {

      // No permissions request is necessary for launching the image library
      let result = await   ImagePicker.launchImageLibraryAsync({
          


        

        mediaTypes: ImagePicker.MediaTypeOptions.All,
       
        base64: true,
        
        
      });

图片来自网络

从手机上传的图片

【问题讨论】:

    标签: reactjs react-native google-cloud-firestore expo react-native-image-picker


    【解决方案1】:

    您会在网络上看到文件的 uri 是您的 base64 字段的 base64 前置版本。

    在移动设备上,您需要上传而不是使用 fileUri。为了跨平台保持一致,并避免编写重复代码,只需保存 base64 结果即可。

    const { base64 } = await ImagePicker.launchImageLibraryAsync({
            mediaTypes: ImagePicker.MediaTypeOptions.All,
            base64: true, 
          });
    
    const base64ToUpload = `data:image/jpeg;base64,${base64}`;
    

    您还应该考虑从选择的文件中确定文件类型,因为它不能保证是 jpeg(当然取决于您的实现)。

    您遇到问题的原因是 Web 实现为您提供了文件的 base64 表示,但在移动设备上,您在本地存储中获取文件的位置,这是两个非常不同的东西。

    【讨论】:

    • 谢谢它的工作我需要另一个帮助我想在消息发送通知发送到其他设备时使用 Expo React Native 做 firebase 云消息服务工作者
    • Phobos 如果您之前这样做过,请与我分享我该怎么做这个世博云消息传递
    • Expo 文档在 FCM 上非常可靠,这里是链接:docs.expo.dev/push-notifications/using-fcm。在他们的网站上还有涵盖客户端代码的文档。
    • 谢谢我如何下载firebase的google service.json,因为我在创建项目时跳过了这一步
    • 在 Firebase 控制台中转到项目概述 >(选择您在应用程序部分创建的 android / ios 应用程序)> 点击设置图标 > 向下滚动并有一个 'google-services.json' 或 'GoogleService -Info.plist' 链接,可让您根据设置的平台进行下载。
    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 2020-04-23
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多