背景

公司领导提出这样的产品需求:需要上传目录文件,不只是图片和视频,而且同时要支持Android和IOS两大移动端。另外公司App的架构采用的是uni-app。

思考

  • 第一个想到的方案就是,看uni-app框架能否支持。答案可想而知,uni-app组件本身没有提供文件上传组件,不支持
  • uni-app App端内置HTML5+引擎,提供plus接口,对于Android系统可以直接调用Android系统函数,打开系统目录。而对于IOS而言,没有找到使用方法
  • 既然内置HTML5+引擎,能否直接嵌入H5页面呢?当然可以。于是采用H5方式实现

H5页面文件上传

嵌入H5页面,需要采用web-view标签,如下:

注意:

  • h5页面必须在项目目录:/hybrid/html/下面,因为这样uni-app才不会进行编译
  • @message事件是h5页面向应用发送数据的回调

web-view传递数据问题

1、@message

第一种解决方法:通过@message传递数据,在h5页面中,上传完文件后,获取上传后的文件信息,直接postMessage后,web-view页面会接收

uni.postMessage({    data: {        action: data    }});

问题

当运行代码的时候,并没有执行@message回调,需要点击h5页面返回的时候,才会调用回调函数。于是在执行完postMessage后,调用如下函数返回上一级页面

uni.navigateBack({    delta: 1});

注意:

  • 在h5页面中调用uni-app接口时,需要添加uni SDK
  • 如果要让web-view的上一级页面,即表单页面接收数据,解决方法是:放到store中,表单页面从store中获取

2、页面跳转url传递数据

第二种解决方法:通过页面跳转url传递数据。在h5页面上传完文件后,调用页面跳转函数,将文件数据放到url参数中,如下:

uni.redirectTo({    url: './h5Upload?fileData=' + data,})

demo

github:https://github.com/silianpan/...

  • 两种方案

  • 表单页

  • 选择系统目录文件

  • 页面跳转url传递数据

附:Android选择系统目录

转载请注明:溜爸 » uni-app系统目录文件上传(非只图片和视频)解决方案

更多相关文章

  1. 安全新手入坑——HTML标签
  2. Nginx系列教程(四)| 一文带你读懂Nginx的动静分离
  3. 一款常用的 Squid 日志分析工具
  4. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  5. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  6. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  7. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  8. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  9. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...

随机推荐

  1. 【第767期】你不懂JS:混合(淆)“类”的对象
  2. 2021必修 CSS架构系统精讲
  3. PHP常用数组函数
  4. 0630作业
  5. 【第769期】2016 JavaScript 发展现状大
  6. Python经典面试题之前端和框架!Python学习
  7. HTML常用标签
  8. 【案例】星环科技原厂数据备份恢复软件,让
  9. 【案例】星环智能分析工具 Sophon,助力上
  10. php在线生成ico文件的代码