javascript 如何在react原生expo中使用there软件包将file://url转换为https或http url?

vc6uscn9  于 2023-01-29  发布在  Java
关注(0)|答案(2)|浏览(164)

如何转换file://url到https或http url在react本地博览会使用那里包?我怎么做?像在我的情况下photo. uri是一个file://url,我想把它转换成https或http url我怎么做?使用expo文件系统,
我试过这个:

import * as FileSystem from 'expo-file-system';
import { createDownloadResumable } from 'expo-file-system';

const { uri } = createDownloadResumable(photo.uri, FileSystem.documentDirectory);
let httpsUri = uri.replace("file://" "https://");

还尝试过:const { uri } = createDownloadResumable(photo.uri, FileSystem.documentDirectory + 'photo.jpg');
什么都没做
该URI变为未定义

const handleTakePicture = async () => {
    if (faceData.length === 0) {
      alert('No Face')
    }
    else if (cameraRef.current) {
      const photo = await cameraRef.current.takePictureAsync();
      console.log(photo.uri)
      if (!photo.cancelled) {
        const { uri } = createDownloadResumable(photo.uri, FileSystem.documentDirectory);
        let httpsUri = uri.replace("file://", "https://");
        console.log(`this is the url of the fs ${httpsUri}`)
      }
    }
  }

还有什么更好的解决方案?

m0rkklqb

m0rkklqb1#

您可以使用expo-file-system包提供的fetch方法在React Native Expo应用程序中将file://URL转换为https或http URL。
下面是一个如何使用fetch方法将file://URL转换为https URL的示例:
从"expo-file-system"导入 * 作为文件系统;
//...
常量文件Uri ='文件://路径/到/文件. jpg';
常量响应=等待文件系统. fetch(文件Uri,{方法:"头部"});
常量httpsUrl =响应. url;
上面的代码片段首先导入包,然后使用fetch方法向file://URL发送HEAD请求。fetch方法返回的响应对象包含url属性,该属性保存文件的https URL。
您还可以将HEAD方法更改为GET以下载文件,然后可以使用http或https url访问文件。
请记住,只有当您尝试访问的文件托管在支持https或http访问的Web服务器上时,此操作才有效。

5uzkadbs

5uzkadbs2#

从“expos-asset”导入{资产};

// fileUri is a string that contains the file:// URL
const fileUri = 'file://path/to/file';

// Get the https:// or http:// URL of the file
const url = await Asset.fromUri(fileUri).downloadAsync();

console.log(url);

您需要使用fetch或XMLHttpRequest下载文件,以确保该文件在本地文件系统中可用。
或者,您可以使用react-native-fs包将file://URL转换为https或http URL。

import RNFS from 'react-native-fs';

const fileUri = 'file://path/to/file';

const url = RNFS.DocumentDirectoryPath + '/' + fileUri.substring(fileUri.lastIndexOf('/') + 1);
console.log(url);

如果你正在使用react-native-fs软件包,你需要首先通过在你的项目目录中运行npm install react-native-fs --保存或者yarn add react-native-fs来安装它。

相关问题