微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.system.ErrnoException:打开失败:ENOENT没有这样的文件或目录,该文件存在于路径中,名称为

如何解决android.system.ErrnoException:打开失败:ENOENT没有这样的文件或目录,该文件存在于路径中,名称为

我正在尝试将图像发送到我的apollo-graphql服务器,但是出现以下错误

android.system.ErrnoException:打开失败:ENOENT(没有这样的文件或目录)

这是Android代码

lifecycleScope.launch {
                    val response = try {
                        apolloClient(requireContext()).mutate(
                            SubirImagenMutation(
                                imagenData = FileUpload("image/jpg",File(imagen.path!!).toString())
                            )
                        ).toDeferred().await()
                    } catch (e: ApolloException) {
                        Toasts().visualizarToast(requireContext(),getString(R.string.str_err_generico))
                        return@launch
                    }
                    findNavController().navigate(R.id.serviciosFragment)
                }

图像路径:

/document/1804-2E16:DCIM/definicion-de-persona-min.jpg:打开失败:ENOENT(无此类文件或目录)

应用权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

谢谢。

解决方法

并非每个URI都可以解析为文件系统上的严格文件路径。例如一些文件选择器可以返回放置在某些云存储上的文件...

在您的情况下,{p} URI指向/document/1804-2E16:DCIM/definicion-de-persona-min.jpg,格式不正确。您可能会得到与该URI类似的/document/1804-2E16,并认为这是目录路径,因此您要添加String文件名,但这不是这样的。文件的完整“路径”可能看起来像这样:

content://com.android.providers.downloads.documents/document/1804-2E16

没有文件名,没有文件格式,只是一个“指针”-URI

阅读有关FileProvider的信息,并查看THIS主题以获取有关如何获得对此类文件的访问权限的一些信息。修复此“错误”并非易事,总之,您必须处理一些文件流

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。