【问题标题】:React Native Retrieving Image file paths from DatabaseReact Native 从数据库中检索图像文件路径
【发布时间】:2019-01-05 15:04:57
【问题描述】:

我想知道如何在 React Native 中为从数据库中检索图像并将其显示给用户的应用程序建模。我打算将图像存储在一个目录中,并让一个数据库存储所有图像的文件路径。

但是,我发现其他人遇到的一个问题是 React Native 在源代码中需要一个完全静态的文件路径。我经常看到的一种解决方案是使用单个索引或 switch 语句来引用所有图像。但是,我相信此模型不适用于我的应用程序,因为用户应该能够上传自己的图像,然后将其存储在服务器上,并将其文件路径放入数据库中,但不会在交换机中表示陈述。这种情况可能有什么样的解决方案?

【问题讨论】:

  • 我将图像作为字节数组保存到数据库中,并从 API 作为字节数组返回。无需处理文件位置。

标签: image react-native require


【解决方案1】:

对于我的 react-native 应用程序,为了上传照片,我使用 react-native-image-picker 从用户设备中选择一张图片,并使用 rns3 将图片发送到 aws s3。对于图片的文件名,我使用了app名,加上moment js库来动态创建唯一的文件名。您也可以使用 uuid。

例如:

  ImagePicker.showImagePicker(options, response => {

    if (response.didCancel) {
      // alert cancel
    } else if (response.error) {
      // alert error
    } else {
      const { uri } = response;
      const extensionIndex = uri.lastIndexOf(".");
      const extension = uri.slice(extensionIndex + 1);

      const file = {
        uri,
        name: `${YourAppName}_${moment.utc().format("YYYY-MM-DD-HH-mm-ss")}.${extension}`,
        type: "image/jpeg"
      };

      const options = {
        keyPrefix: ****,
        bucket: ****,
        region: ****,
        accessKey: ****,
        secretKey: ****
      };

      // send file to aws s3 and to your db ...

      RNS3.put(file, options)
        .progress(event => {
          console.log(`percent: ${event.percent}`);
        })
        .then(response => {
          if (response.status !== 201) {
            console.error(response.body);
            return;
          }

          // this will contain the image url
          let image = response.headers.Location;

          // send image url to your db

        })
    })

要显示图像,只需使用存储在 db 中的 url。

【讨论】:

  • 这在上传方面很有意义!但是在检索图像方面,如果我要创建一个变量来保存存储在数据库中的 url 并将变量传递给 source={require('my_variable')} 语句,那会引发错误吗?一些来源和文档指出 src 资源必须是静态的,所以我对这是否可行有点迷茫。
  • 您不需要使用带有 url 的 require 语句。只需执行以下操作:<Image style={{width: 50, height: 50}} source={{uri: yourImageUrl}} /> yourImageUrl 是一个包含图像网址的变量 facebook.github.io/react-native/docs/image
  • 所以澄清一下,将图像的 Url 存储在数据库中(在相应的行中)是否正确,然后查询该 Url 并将其存储到提供给图像组件的变量中?
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2012-05-22
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多