码迷,mamicode.com
首页 > Web开发 > 详细

Ionic3学习笔记(十六)上传头像至图床

时间:2018-03-11 02:37:39      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:易用   toast   val   getheight   his   通讯   hang   ionic   文章   

本文为原创文章,转载请标明出处

个人做的开源 Demo 登录注册模块采用的是 Wilddog 野狗通讯云的身份认证服务,不得不说各方面和 Google 收购的 Firebase 很像,十分简单易用。其中 User 有个 photoURL 字段是用来存放用户头像 URL 的,所以寻思着找了个免费的第三方图床(SM.MS)来存放用户头像。

用到的 Cordova 插件是 CameraFile Transfer,分别用来拍照、相册选择和上传图片,Cordova 插件的安装、导入、使用我就不赘述了,文档里都有,so 直接上关键代码。

  getPictureAndUpload(sourceType: number) {
    const cameraOptions: CameraOptions = {
      quality: 80,
      destinationType: this.camera.DestinationType.FILE_URI,
      sourceType: sourceType,
      allowEdit: true,
      encodingType: this.camera.EncodingType.JPEG,
      targetWidth: 200,
      targetHeight: 200,
      mediaType: this.camera.MediaType.PICTURE,
      correctOrientation: true,
      saveToPhotoAlbum: true,
      cameraDirection: this.camera.Direction.BACK
    };

    this.camera.getPicture(cameraOptions).then(image => {
      this.onUploadPicture(image);
    }, error => {
      console.log(error);
    });
  }

  onUploadPicture(fileURI: string) {
    const fileTransferObject: FileTransferObject = this.fileTransfer.create();

    const fileUploadOptions: FileUploadOptions = {
      fileKey: ‘file‘,
      fileName: ‘avatar.jpg‘,
      httpMethod: ‘POST‘,
      mimeType: ‘image/jpeg‘,
      params: {},
      chunkedMode: true,
      headers: {‘Content-Type‘: ‘multipart/form-data‘}
    };

    let url: string = ‘https://sm.ms/api/upload?smfile=‘ + fileURI;

    fileTransferObject.upload(fileURI, url, fileUploadOptions).then(data => {
      console.log(data["response"]);
      wilddog.auth().onAuthStateChanged(user => {
        user.updateProfile({‘photoURL‘: JSON.parse(data["response"])["data"]["url"]}).then(() => {
          this.getUserData();
        }, error => {
          this.presentToast(error.name + ‘: ‘ + error.message);
        });
      });
    }, error => {
      console.log(error);
    });
  }

  presentChangeAvatarActionSheet() {
      let changeAvatarActionSheet = this.actionSheetCtrl.create({
        title: ‘更换头像‘, buttons: [{
          text: ‘相册‘, handler: () => {
            this.getPictureAndUpload(this.camera.PictureSourceType.PHOTOLIBRARY);
          }
        }, {
          text: ‘拍照‘, handler: () => {
            this.getPictureAndUpload(this.camera.PictureSourceType.CAMERA);
          }
        }, {text: ‘取消‘, role: ‘cancel‘}]
      });
      changeAvatarActionSheet.present().then(value => {
        return value;
      });
    }
  }

如有不当之处,请予指正,谢谢~

Ionic3学习笔记(十六)上传头像至图床

标签:易用   toast   val   getheight   his   通讯   hang   ionic   文章   

原文地址:https://www.cnblogs.com/metaphors/p/8542878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!