Queal
Queal
  • 发布:2023-02-06 12:26
  • 更新:2023-02-07 13:54
  • 阅读:405

【报Bug】input type=file 在 targetVersion=30, android10 的环境下无法上传文件(怀疑无法读取到文件)

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows10

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: 红米note7

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

选择文件, 上传

预期结果:

选择文件可以上传

实际结果:

选择文件无法上传

bug描述:

文件上传使用插件市场 i-file 插件. 之前是好的

插件原理是 在 webview中使用 input type=file

因为hbuilder现在云端打包强制要求升级hx, 所以跟着升级

升级之后
在 targetVersion=30, android10 的环境下无法上传文件(怀疑无法读取到文件)

而targetVersion降级到 26 就可以, 但是因为市场上已经是30, 降级需要用户手动安装app, 运营难度较大

2023-02-06 12:26 负责人:无 分享
已邀请:
Queal

Queal (作者) - Queal

是否应该考虑 android10之上的 scope storage 特性, 在webview showFileChooser(禁止从文件管理里选择文件, 因为选择了, 程序也读不到)的时候, 做一个适配改动? 建议官方考虑, 并且给出回复, 谢谢

Queal

Queal (作者) - Queal

提交了demo, 目前反编译查看 uni 基座代码, 里面 有一个 FileChooseDialog, 里面写死了, 官方有人能 confirm 一下这个问题吗?

Queal

Queal (作者) - Queal

再提供新的线索, targetSdkVersion30以上, fiddler抓包, 请求都没发出来, 建议往 formdata 使用 js 的file 对象, 就是 uri这块查询

DCloud_Android_ST

DCloud_Android_ST

可以看下这篇文章 https://ask.dcloud.net.cn/article/36199 猜测你选择的图片属于非公共区域的图片 所以图片读取失败了

  • Queal (作者)

    选的pdf上传, 所以有什么办法解法呢, 看基座里设置 chromClient的时候, 里面重写了一个FileChooser, FileChooser里一种3个, 同时会加载所有支持 accpetTypes的组件, 问题就是出在 .dc.fileprovider这里(这里是不是判断一下android版本, 如果是10以上, 就不提供), 这里读的时候没考虑 scope storage的实现, 你们看下普通的浏览器, 现在对input[type=file] 是只有 GET_CONTENT 实现

    2023-02-07 09:19

  • Queal (作者)

    麻烦官方能细节看一下, 或者有什么办法提交pr? 给个渠道也行

    2023-02-07 09:23

  • Queal (作者)

    用的方案 webview input[type=file], 跟plus没关系( https://ask.dcloud.net.cn/article/36199 ) 看过了

    2023-02-07 10:27

  • DCloud_Android_ST

    回复 2***@qq.com: 你看看能不能拿到你无法上传文件的完整路径 我这边看看

    2023-02-07 11:33

  • Queal (作者)

    回复 DCloud_Android_ST: demo提供了, 你看看, js里用的是 formdata 直接获取 file对象上传的

    2023-02-07 12:20

  • DCloud_Android_ST

    回复 2***@qq.com: 我这不是所有图片都有问题 我需要看你那不行图片的路径

    2023-02-07 12:27

  • Queal (作者)

    回复 DCloud_Android_ST: 你就放downloads目录, 从 fileChooser的第三个菜单按钮'文件管理' 这个选项里进去找文件, 上传就会失败, 第二个菜单按钮'文件'选是没问题的, 不是图片, 是文件, 图片直接走相册那个是没问题的

    2023-02-07 13:46

Queal

Queal (作者) - Queal

@DCloud_Android_ST

  • Queal (作者)

    我试了浏览器解析 input[type=file] , 只有 前两个 [相机, 文件]

    2023-02-07 13:53

Queal

Queal (作者) - Queal

@DCloud_Android_ST 测试附件文件

该问题目前已经被锁定, 无法添加新回复