当前位置:   article > 正文

【ArkTs】Api9中Stage模式base64上传图片_arkts使用axios上传图片

arkts使用axios上传图片

一、获取权限

  1. import abilityAccessCtrl, { Permissions } from '@ohos.abilityAccessCtrl';
  2. import PreferencesUtil from '../common/utils/PreferencesUtil';
  3. const PERMISSIONS: Array<Permissions> = ['ohos.permission.READ_MEDIA', 'ohos.permission.WRITE_MEDIA', 'ohos.permission.CAMERA', 'ohos.permission.INTERNET']
  4. async onCreate(want, launchParam) {
  5. hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  6. //这里要获取权限
  7. let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager()
  8. try {
  9. 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. }).catch((err) => {
  14. console.info('appstart'+`err: ${JSON.stringify(err)}`)
  15. })
  16. } catch (err) {
  17. console.info('appstart'+ `catch err->${JSON.stringify(err)}`);
  18. }
  19. }

此处参考来源:华为开发者博客

二、开发代码

引入资源

  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代码

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

此段代码开发参考:华为开发者论坛

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/259165
推荐阅读
相关标签
  

闽ICP备14008679号