3

我正在从 URI 下载文件,并尝试在另一个应用程序中打开它。该文件是一个简单的 .xlsx 电子表格。我正在使用 Android 设备进行测试。下面的代码是一个可重现的示例:

import React, { useCallback } from 'react'
import { Button, View } from 'react-native'
import * as Linking from 'expo-linking'
import * as FileSystem from 'expo-file-system'

const App = () => {
  const download = useCallback(async () => {
    const downloadUri = 'http://url.to/my/spreadsheet.xlsx')
    const localPath = `${FileSystem.cacheDirectory}spreadsheet.xlsx`
    try {
      await FileSystem.downladAsync(downloadUri, localPath)
        .then(async ({ uri }) => {
          const contentURL = await FileSystem.getContentUriAsync(uri)
          await Linking.openURL(contentURL)
        })
        .catch((err) => console.log(err))
    } catch (err) {
      console.log(err)
    }
  }, [])

  return (
    <View>
      <Button onPress={download}>
        Pree Me!
      </Button>
    </View>
  )
}

控制台日志中未显示任何错误,但是当Linking尝试打开文件时会出现错误“Google 表格无法打开您的电子表格”。当我尝试打开其他文件类型时,也会发生同样的事情:

  • .docx使用 Google 文档
  • .pptx使用 Google 幻灯片
  • .pdf 带云端硬盘
  • ... 等等

知道是什么原因造成的吗?

笔记

我使用以下方法验证了 URL 返回的文件是否未损坏:

curl -X GET http://url.to/my/spreadsheet.xlsx -o spreadsheet.xlsx(从设备内),它可以用谷歌表格正常打开。

4

0 回答 0