一、获取权限
01 | import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl' ; |
02 | import PreferencesUtil from '../common/utils/PreferencesUtil' ; |
03 | const 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 | } |
二、开发代码
引入资源
1 | import picker from '@ohos.file.picker' ; |
2 | import fs from '@ohos.file.fs' ; |
3 | import util from '@ohos.util' ; |
4 | import 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 | |
15 | Upload(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 | } |