flutter Android 腾讯云上传

最近用flutter开发IM软件,用到腾讯云上传图片视频等资源,发现居然没有改插件,于是动动手自己写了个iOS和安卓的

Android 接入腾讯云上传工具,iOS在另一文章中有详细记载,有问题可以留言

/**
 * 腾讯云
 */
public class Plugin implements MethodCallHandler {
    Registrar registrar;
    MethodChannel channel;

    public TencentCosPlugin(Registrar registrar, MethodChannel channel) {
        this.registrar = registrar;
        this.channel = channel;
    }

    /**
     * Plugin registration.
     */
    public static void registerWith(Registrar registrar) {
        final MethodChannel channel = new MethodChannel(registrar.messenger(), "tencent_cos");
        channel.setMethodCallHandler(new TencentCosPlugin(registrar, channel));
    }

    @Override
    public void onMethodCall(MethodCall call, final Result result) {
        if (call.method.equals("TencentCos.uploadFile")) {
            LocalSessionCredentialProvider localCredentialProvider = new LocalSessionCredentialProvider(call.<String>argument("secretId"),
                    call.<String>argument("secretKey"), call.<String>argument("sessionToken"),
                    Long.parseLong(call.argument("expiredTime").toString())
            );
            String region = call.argument("region");
            String appid = call.argument("appid");
            String bucket = call.argument("bucket");
            String cosPath = call.argument("cosPath");
            final String localPath = call.argument("localPath");
            TransferConfig transferConfig = new TransferConfig.Builder().build();
            CosXmlServiceConfig.Builder builder = new CosXmlServiceConfig.Builder().setAppidAndRegion(appid, region).setDebuggable(false).isHttps(true);
//创建 CosXmlServiceConfig 对象,根据需要修改默认的配置参数
            CosXmlServiceConfig serviceConfig = new CosXmlServiceConfig(builder);
            CosXmlService cosXmlService = new CosXmlService(registrar.context(), serviceConfig, localCredentialProvider);
            //初始化 TransferManager
            TransferManager transferManager = new TransferManager(cosXmlService, transferConfig);

//上传文件
            COSXMLUploadTask cosxmlUploadTask = transferManager.upload(bucket, cosPath, localPath, null);

            final HashMap<String, Object> data = new HashMap<>();
            data.put("localPath", localPath);
            data.put("cosPath", cosPath);
            cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {

                @Override
                public void onProgress(final long complete, final long target) {
                    ((Activity) registrar.activeContext()).runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
//                            result.success( complete + "====run====" + target);
                            channel.invokeMethod("onProgress", complete + "====run====" + target);
                        }
                    });

                    Log.e("TencentCosPlugin", "onProgress =${progress * 100.0 / max}%");
                }
            });
            //设置返回结果回调
            cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
                @Override
                public void onSuccess(CosXmlRequest request, CosXmlResult httPesult) {
                    Log.d("TencentCosPlugin", "Success: " + httPesult.printResult());
                    ((Activity) registrar.activeContext()).runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            result.success("0");
                           
                        }
                    });
                }

                @Override
                public void onFail(CosXmlRequest request, CosXmlClientException exception, CosXmlServiceException serviceException) {
                    Log.d("TencentCosPlugin", "Failed: " + (exception.toString() + serviceException.toString()));
                    data.put("message", (exception.toString() + serviceException.toString()));
                    ((Activity) registrar.activeContext()).runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            result.success("1");
//                        
                          
                        }
                    });

                }
            });
        } else {
            result.notImplemented();
        }
    }

}

更多详解:
喜欢可以加Q群号:913934649,点赞,评论;

简书: https://www.jianshu.com/u/88db5f15770d

csdn:https://me.csdn.net/beyondforme

掘金:https://juejin.im/user/5e09a9e86fb9a016271294a7

发布了152 篇原创文章 · 获赞 18 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/beyondforme/article/details/104063803