GithubHelp home page GithubHelp logo

silianpan / uniapp-file-upload Goto Github PK

View Code? Open in Web Editor NEW
49.0 3.0 20.0 29 KB

uni-app系统目录文件上传(非只图片和视频)解决方案,永中云服务提供文档上传和在线预览

Home Page: http://ua-doc.silianpan.cn

Vue 47.26% HTML 18.31% JavaScript 24.75% SCSS 9.68%
uni-app android ios file-upload yozocloud file-preview

uniapp-file-upload's Introduction

uniapp-file-upload

uni-app系统目录文件上传(非只图片和视频)解决方案

永中云服务

1.0.1新版本已经发布~

新版本基于永中云服务-云预览,完善并实现了跨平台H5文件(非只图片和视频)上传,永中开发者平台

参考技术文档《跨平台文档在线预览解决方案(五)-水印、防复制、在线编辑等》

背景

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

思考

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

H5页面文件上传

嵌入H5页面,需要采用web-view标签,如下: <web-view src="/hybrid/html/index.html" @message="handleMessage">

注意:

  • 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
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.1.js"></script>
  • 如果要让web-view的上一级页面,即表单页面接收数据,解决方法是:放到store中,表单页面从store中获取

2、页面跳转url传递数据

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

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

Demo

github:https://github.com/silianpan/uniapp-file-upload

  • 两种方案

  • 表单页

  • 选择系统目录文件

  • 页面跳转url传递数据

附:Android选择系统目录

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

uniapp-file-upload's People

Contributors

silianpan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

uniapp-file-upload's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.