首页 > 建站教程 > APP开发,混合APP >  【ArkTs】Stage模式选取的图片转成base64上传图片正文

【ArkTs】Stage模式选取的图片转成base64上传图片

一、获取权限

01import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
02import PreferencesUtil from '../common/utils/PreferencesUtil';
03const PERMISSIONS: Array<Permissions> = ['ohos.permission.READ_MEDIA''ohos.permission.WRITE_MEDIA''ohos.permission.CAMERA''ohos.permission.INTERNET']
04  async onCreate(want, launchParam) {
05    hilog.info(0x0000, 'testTag''%{public}s''Ability onCreate');
06    //这里要获取权限
07    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
08    try {
09      atManager.requestPermissionsFromUser(this.context, PERMISSIONS).then((data) => {
10        AppStorage.SetOrCreate('filePath'this.context.filesDir)
11        AppStorage.SetOrCreate('context'this.context)
12        console.info('appstart'+'MainAbility onCreate')
13  
14      }).catch((err) => {
15        console.info('appstart'+`err: ${JSON.stringify(err)}`)
16  
17      })
18    catch (err) {
19      console.info('appstart'+ `catch err->${JSON.stringify(err)}`);
20    }
21  }


二、开发代码

引入资源

1import picker from '@ohos.file.picker';
2import fs from '@ohos.file.fs';
3import util from '@ohos.util';
4import image from '@ohos.multimedia.image';


onClick代码

01.onClick(() => {
02        let PhotoSelectOptions = new picker.PhotoSelectOptions();
03        PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
04        PhotoSelectOptions.maxSelectNumber = 1;
05  
06        let photoPicker = new picker.PhotoViewPicker();
07        photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult) => {
08          console.info('uploadImage:' + PhotoSelectResult.photoUris);
09          this.Upload(PhotoSelectResult.photoUris[0]);
10  
11        }).catch((err) => {
12          console.error('uploadImage:PhotoViewPicker.select failed with err: ' + err);
13        });
14  
15Upload(userAvatar) {
16    console.log('uploadImage:fileuri:' + userAvatar);
17    fs.open(userAvatar, fs.OpenMode.READ_ONLY).then((file) => {
18      console.info("uploadImage:file fd: " + file.fd);
19      const imageSource = image.createImageSource(file.fd);
20      const imagePackerApi: image.ImagePacker = image.createImagePacker();
21      let packOpts: image.PackingOption = { format: 'image/jpeg', quality: 30 };
22      imagePackerApi.packing(imageSource, packOpts).then((readBuffer) => {
23        let bufferArr = new Uint8Array(readBuffer)
24        let help = new util.Base64Helper
25        var base = help.encodeToStringSync(bufferArr)
26        console.info("uploadImage:base is : " + base);
27          //此处进行网络请求,上传到服务器
28      });
29    }).catch((err) => {
30      console.info("uploadImage:copy file failed with error message: " + err.message + ", error code: " + err.code);
31    });
32  }