在做weex开发时使用leancloud文件上传

不同于移动端原生开发,当开发者使用weex移动开发时,使用第三方SDK比较棘手。因为第三方的JS SDK是无法直接拿来使用的,环境不同。必须使用原生SDK,下面我介绍一下自己是如何在weex开发时(安卓)使用leancloud的服务的。

首先去leancloud的安卓SDK下载页面,下载SDK,这里我只使用了最基础的SDK包

<img src="/uploads/default/original/2X/5/582ffee695e0192ae085f0bc0e033543b316f673.png" width="452" height="221">

其实用Gradle也可以啊,我喜欢下载手动集成。

然后在mainApplication.java文件中onCreat()方法里初始化

AVOSCloud.initialize(this,yourappid,yourappkey)

做过weex开发都知道,这个方法里面还会初始化WXSDKEngine和ImageAdapter,它们不冲突。

InitConfig config = new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build();

WXSDKEngine.initialize(this,config);

现在进入正题了,如何在weex页面实现上传图片呢?

Step.1  扩展一个Module,调用手机系统的图库

@WXModuleAnno(runOnUIThread = true)

public void uploadimage(){

int REQUESTCODE_PICK = 0;

Intent intent;

if(Build.VERSION.SDK_INT < 19){

Log.d("chenlei api level","Your api is lower than 19");

intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.setType("image/*");

}else{

Log.d("chenlei api level","Your api is higher than 19");

intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

}

((Activity)mWXSDKInstance.getContext()).startActivityForResult(intent,REQUESTCODE_PICK);

}

Step.2 在负责渲染weex页面的activity类里,重写onActivityResult方法

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

Toast.makeText(getApplicationContext(),"这个函数有效吗?",Toast.LENGTH_SHORT);

super.onActivityResult(requestCode, resultCode, data);

String s = String.valueOf(resultCode);

if(resultCode == Activity.RESULT_OK && requestCode ==  REQUESTCODE_PICK){

Uri uri = data.getData();

Cursor cursor = getContentResolver().query(uri, null, null, null,null);

if (cursor != null && cursor.moveToFirst()) {

Path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));

Log.d("Path", Path);

}

try {

final AVFile file = AVFile.withAbsoluteLocalPath("test.png",Path);

file.saveInBackground(new SaveCallback() {

@Override

public void done(AVException e) {

Log.d(TAG, file.getUrl());

WXBridgeManager manager = WXBridgeManager.getInstance();

Map<String,String> urlData = new HashMap<String, String>();

urlData.put("url",file.getUrl());

urlData.put("showimage","true");

urlData.put("uploadhint","改变图片");

urlData.put("showdelete","true");

String jsonStr = JSON.toJSONString(urlData);

WXRefreshData refreshData = new WXRefreshData(jsonStr,false);

manager.refreshInstance(mInstance.getInstanceId(),refreshData);

}

}, new ProgressCallback() {

@Override

public void done(Integer integer) {

Toast.makeText(getApplicationContext(),"已经上传"+String.valueOf(integer)+"%",Toast.LENGTH_SHORT).show();

}

});

}catch(Exception e){

Toast.makeText(getApplicationContext(),"上传图片失败",Toast.LENGTH_SHORT).show();

}

}else {

Toast.makeText(getApplicationContext(),"请选择图片",Toast.LENGTH_SHORT).show();

}

}

小提示:我们可以在AVFile的回调函数中创建WXBridgeManager获取当前实例,获取文件上传的进度和最终URL,来更新页面组件状态和信息。

简单几步,就实现了leancloud在weex开发中的使用,感谢leancloud提供的优秀资源,你们是开发者的福音呀。

更多源码可以去github上查看,欢迎拍砖和star。

<img src="/uploads/default/original/2X/1/1ab589f1125cb3893ff1d0dbe7c9cc5b8d2f77d7.png" width="466" height="500">

项目地址----------->[leancloud在weex开发中的使用项目实例][1]

[1]: https://github.com/iChenLei/weex-android-joke

有任何疑问可以联系我的Email [email protected],交流weex和leancloud开发。

时间: 2024-10-11 13:23:33

在做weex开发时使用leancloud文件上传的相关文章

SpringMVC常用配置(二),最简洁的配置实现文件上传

Spring.SpringMVC持续介绍中,基础配置前面已经介绍了很多,如果小伙伴们还不熟悉可以参考这几篇文章: 1.Spring基础配置 2.Spring常用配置 3.Spring常用配置(二) 4.SpringMVC基础配置(通过注解配置,非xml配置) 5.SpringMVC常用配置 OK ,那么这里我想说另外一个话题,那就是文件上传,我之前在做Android开发的时候,文件上传我们一般会有两种策略,一种是通过IO流上传,还有一种是通过表单上传,其实这两种在客户端实现起来都是很简单的,在服

Flask Web开发入门北京快乐8出售之文件上传

本章北京快乐8出售 dsluntan.com 我们介绍Flask Web开发中涉及的文件上传模块 定义后台接收处理逻辑@app.route('/upload', methods=['POST'])def upload_file():if request.method == 'POST': check if the post request has the file part if 'file' not in request.files: logger.debug('No file part')

Android客户端多文件上传

在web开发中,多文件上传时是非常方便的,直接使用Http协议提交数据即可.格式如下: <FORM METHOD=POST ACTION="http://192.168.1.101:8083/upload/servlet/UploadServlet" enctype="multipart/form-data"> <INPUT TYPE="text" NAME="name"> <INPUT TYPE

文件上传到tomcat服务器 commons-fileupload的详细介绍与使用

三个类:DiskFileUpload.FileItem和FileUploadException.这三个类全部位于org.apache.commons.fileupload包中. 首先需要说明一下form表格的enctpye的属性: 表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码.默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传:只有使用了multipart/form-data,

多文件上传简单实现

五一假期后的第一天上班,无聊,做了一个简单的多文件上传,如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; usin

Fine Uploader文件上传组件

最近在处理后台数据时需要实现文件上传.考虑到对浏览器适配上采用Fine Uploader. Fine Uploader 采用ajax方式实现对文件上传.同时在浏览器中直接支持文件拖拽[对浏览器版本有要求类似IE版本必须是9或是更高的IE10].在不同浏览器中提供统一用户体验.该组件基本覆盖目前所有主流浏览器.同时没有任何第三方组件依赖.相当Clear.在服务器端已经覆盖支持了ASP.NET/ColdFusion/Java/Node.js/Perl/PHP/Python. 对上传细节类似限制文件大

Springboot如何启用文件上传功能

网上的文章在写 "springboot文件上传" 时,都让你加上模版引擎,我只想说,我用不上,加模版引擎,你是觉得我脑子坏了,还是觉得我拿不动刀了. springboot如何启用文件上传功能: 其实你啥都不用做,直接用就是了.文件上传相关的随着你的webStarter引入,就被引入到你的项目里面了. POM依赖: 代码: 注意事项: springboot文件上传 单个请求包含的文件默认大小:1MB-10MB 请求格式POST 参数格式form-data 如果出错了,请仔细查看报错信息!

TP5单文件、多文件上传

文件上传可以直接引用框架自定义的文件上传类 use think\File; 这里封装一个文件上传的model,以便重复利用 UploadFiles.php 1.控制器层 use app\admin\model\UploadFiles;    // 使用文件上传model 2.model层 <?phpnamespace app\admin\model;use think\Model;       // 使用Modeluse think\File;           // 使用文件上传类use t

easyui+ajaxfileupload,无刷新文件上传

头文件引用 <link href="easyui/themes/default/easyui.css" rel="stylesheet" type="text/css" /> <link href="easyui/themes/icon.css" rel="stylesheet" type="text/css" /> <script src="ea