如何解决android.system.ErrnoException:打开失败:ENOENT没有这样的文件或目录,该文件存在于路径中,名称为
我正在尝试将图像发送到我的apollo-graphql服务器,但是出现以下错误:
这是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 举报,一经查实,本站将立刻删除。