React native 如何使用expo文件系统获取文件扩展名?

React native 如何使用expo文件系统获取文件扩展名?,react-native,expo,React Native,Expo,我正在使用expo文件系统从cameraRoll获取照片和视频。有没有办法获取这些文件的扩展名 使用图像选择器 如果您已经请求了权限,并且能够从ImagePicker获得响应,那么您应该得到一个如下所示的对象 { "cancelled": false, "height": 2436, "type": "image", "uri": "file:///lots/of/dir

我正在使用expo文件系统从cameraRoll获取照片和视频。有没有办法获取这些文件的扩展名

使用图像选择器 如果您已经请求了权限,并且能够从ImagePicker获得响应,那么您应该得到一个如下所示的对象

{
  "cancelled": false,
  "height": 2436,
  "type": "image",
  "uri": "file:///lots/of/directories/where/the/image/is/stored/ImagePicker/B69EA641-4738-4425-8319-FE190FC4BD6D.png",
  "width": 1125,
}
如果您这样调用ImagePicker(请记住这是一个
等待
,因此它应该包装在
try/catch
中)

然后,您可以使用
result.uri

所以我们可以这样做

let uri = result.uri;
let fileExtension = uri.substr(uri.lastIndexOf('.') + 1);
请记住,用户可以取消请求,因此您应该检查
结果。在尝试获取文件扩展名之前,cancelled
为false,否则您将遇到问题,因为uri将不存在

使用CameraRoll 在不同的平台上,使用摄像机镜头的反应并不一致。以下代码将访问设备上的第一个视频

let params = { first: 1, assetType: CameraRoll.AssetTypeOptions.Videos }; 
let result = await CameraRoll.getPhotos(params)
let videos = result.edges // the edges key stores an array of objects
安卓 网间网操作系统 正如您所看到的那样,
Android
没有给出特定的
文件名
,不像
iOS
那样。对于
iOS
,您可以使用上述方法提取文件扩展名。不幸的是,对于
Android
来说,获取实际文件扩展名的唯一方法是使用
ImagePicker

使用ImagePicker 如果您已经请求了权限,并且能够从ImagePicker获得响应,那么您应该得到一个如下所示的对象

{
  "cancelled": false,
  "height": 2436,
  "type": "image",
  "uri": "file:///lots/of/directories/where/the/image/is/stored/ImagePicker/B69EA641-4738-4425-8319-FE190FC4BD6D.png",
  "width": 1125,
}
如果您这样调用ImagePicker(请记住这是一个
等待
,因此它应该包装在
try/catch
中)

然后,您可以使用
result.uri

所以我们可以这样做

let uri = result.uri;
let fileExtension = uri.substr(uri.lastIndexOf('.') + 1);
请记住,用户可以取消请求,因此您应该检查
结果。在尝试获取文件扩展名之前,cancelled
为false,否则您将遇到问题,因为uri将不存在

使用CameraRoll 在不同的平台上,使用摄像机镜头的反应并不一致。以下代码将访问设备上的第一个视频

let params = { first: 1, assetType: CameraRoll.AssetTypeOptions.Videos }; 
let result = await CameraRoll.getPhotos(params)
let videos = result.edges // the edges key stores an array of objects
安卓 网间网操作系统
正如您所看到的那样,
Android
没有给出特定的
文件名
,不像
iOS
那样。对于
iOS
,您可以使用上述方法提取文件扩展名。不幸的是,对于
Android
来说,获取实际文件扩展名的唯一方法是使用
ImagePicker

谢谢您的回复,但是我使用了CameraRoll,如下所示:让params={first:21,assetType:CameraRoll.AssetTypeOptions.Videos};getPhotos(params)我想实现像instagram添加post一样的功能。但在android中,似乎没有什么比在cameraRoll apiYeah中包含文件扩展名更好的了,这就是为什么我解释了使用ImagePicker的原因。CameraRoll在Android上的回报有点有限。我已经更新了我的答案,以包括iOS和Android响应之间的差异。感谢您的回复,但我使用了CameraRoll,如下所示:让params={first:21,assetType:CameraRoll.AssetTypeOptions.Videos};getPhotos(params)我想实现像instagram添加post一样的功能。但在android中,似乎没有什么比在cameraRoll apiYeah中包含文件扩展名更好的了,这就是为什么我解释了使用ImagePicker的原因。CameraRoll在Android上的回报有点有限。我已经更新了我的答案,以包括iOS和Android响应之间的差异。