phonegap(cordova) 入门 7----phonegap 多图片上传

phonegap 多图片上传

官方插件应该是只有单选,而且调用的是默认本地相册,毫无美感,作为常用功能之一,那这也算是一个利器了,用了提神醒脑,哈哈

android 和ios 分别引用不同的原生插件,感谢开源,感谢github,分享以表支持
android 中使用了
https://github.com/AizazAZ/Android-Ultra-Photo-Selector
需要先自定义自己的phonegap插件,然后再自己的插件中调用此插件,部分代码如下


//call
            Intent intent = new Intent(this.cordova.getActivity()
                    .getBaseContext(), PhotoSelectorActivity.class);
            intent.putExtra(PhotoSelectorActivity.KEY_MAX, 8);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

            this.cordova.startActivityForResult((CordovaPlugin) this, intent,
                    SELECT_IMAGE_CODE);


            PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
            r.setKeepCallback(true);
            callbackContext.sendPluginResult(r);
            return true;

//callback

        if (requestCode == SELECT_IMAGE_CODE) {
            if (resultCode == Activity.RESULT_OK) {
                @SuppressWarnings("unchecked")
                List<PhotoModel> photos = (List<PhotoModel>) intent.getExtras()
                        .getSerializable("photos");
                if (photos == null || photos.isEmpty()) {

                } else {

                    String files = "{\"files\":[";
                    for(int i=0;i<photos.size();i++){
                        if(i==0){
                            String file = "{\"path\":\""+photos.get(i).getOriginalPath()+"\"}";

                            files+=file;
                        }else{
                            String file = ",{\"path\":\""+photos.get(i).getOriginalPath()+"\"}";

                            files+=file;
                        }
                    }
                    files+="]}";




                    this.callbackContext.success(files);
                }

            }
        }







IOS 中使用了
https://github.com/MakeZL/MLSelectPhoto
需要先自定义自己的phonegap插件,然后再自己的插件中调用此插件,代码如下

 //call   //callback  
 MLSelectPhotoPickerViewController *pickerVc = [[MLSelectPhotoPickerViewController alloc] init];
pickerVc.status = PickerViewShowStatusCameraRoll;

pickerVc.maxCount = 9;


[pickerVc showPickerVc: self.window.rootViewController];
__weak typeof(self) weakSelf = self;

selectImagesCallbacked = false;
pickerVc.callBack = ^(NSArray *assets){

    //only once
    if(!selectImagesCallbacked)
    {

        selectImagesCallbacked = true;
        int i;
        NSString *files =@"{\"files\":[";



        for (i=0; i<[assets count]; i++) {
            MLSelectPhotoAssets *item = [assets objectAtIndex:i];
            NSString *file =[NSString stringWithFormat:@"{\"path\":\"%@\"}",[[item assetURL] absoluteString]];
            if(i==0){
                files = [NSString stringWithFormat:@"%@%@",files,file];
            }else{
                files = [NSString stringWithFormat:@"%@%@%@",files,@",",file];
            }
        }
        files = [NSString stringWithFormat:@"%@%@",files,@"]}"];

        NSLog(@"selected >>>>%@",files);

        NSString *js =  [[NSString alloc]initWithFormat:@"imgUpload.iosMutiImagesSelected('%@')",  files  ];
        [self runJS:js];
    }
};

“`

猜你喜欢

转载自blog.csdn.net/zlj002/article/details/48682091