【问题标题】:Android 10 open failed: ENOENT (No such file or directory)Android 10 打开失败:ENOENT(没有这样的文件或目录)
【发布时间】:2021-02-03 15:29:03
【问题描述】:

我面临 pdf 的问题,我想使用 Multipart 上传 pdf,但问题是每当我传递文件路径时,android 10 都会给我这个错误。

关于活动结果:

Uri uri = data.getData();
String src = uri.getPath();
File file = new File(src);
RequestBody requestBody = RequestBody.create(MediaType.parse("*/*"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("userfile", file.getName(), requestBody);

【问题讨论】:

  • 再一次...... uri 不是文件的路径
  • 好的,谢谢,我应该怎么做才能得到文件的路径
  • 通过在私有应用程序存储中创建自己的文件,然后将 uri 指向的流复制到它...问了多次 - 不,我不会显示代码也不会找到重复的问题
  • 所以我们无法从文件意图中挑选文件并上传到服务器?
  • 当然你可以直接使用uri把文件上传到服务器。你也应该在 10 岁以下这样做。总是。

标签: java android retrofit android-file


【解决方案1】:
context.contentResolver.openInputStream(uri).?use{
      // read bytes and create requestbody here
}

不要在 api 29 及更高版本上使用 RequestBody.create(MediaType.parse("/"),file) 因为它会尝试打开 inputteam 并且会抛出异常。(如果启用范围存储并且文件不是来自媒体)使用字节数组。

【讨论】:

  • 谢谢兄弟,请在java中保留字节数组上传方式
  • 只从输入流中读取字节。网上有很多例子怎么做。
  • 使用 RequestBody.create(MediaType.parse("/"),bytes)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多