使用离子3时,Firebase图片上传失败

时间:2017-11-24 00:32:12

标签: firebase ionic-framework ionic3 firebase-storage angularfire2

尝试拍照并将其上传到firebase存储空间。

这是我的代码;

import { Camera, CameraOptions } from '@ionic-native/camera';

  async takePhoto() {


try{
    const options: CameraOptions = {
      quality: 50,
      targetHeight: 600,
      targetWidth: 600,
      destinationType: this.camera.DestinationType.DATA_URL,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE

    }

    const result = await this.camera.getPicture(options);

    const image= `data:image/jpeg;based64,${result}`;

    const pictures=storage().ref(`ProfilePictures/${this.myUid}`);
    pictures.putString(image, `data_url`);

  }

  catch(e) {
    console.error(e);

  }
  }

但是它上传了一个实际上不是图像的文件。它上传了一个损坏的文件,即使我下载它,我也无法打开它,因为它不是图像。

这是我的firebase存储空间

enter image description here

感谢阅读请帮助我

2 个答案:

答案 0 :(得分:0)

这可能不是您的问题,因为很难说具体问题是什么,但我过去在图片上传方面遇到过类似的问题,请尝试以下方法:

let result = await this.camera.getPicture(options);
result = result.replace(/(\r\n|\n|\r)/gm,"");
const image= `data:image/jpeg;based64,${result}`;

.replace(/(\r\n|\n|\r)/gm,"")从返回的数据中删除所有换行符。

希望这有帮助。

答案 1 :(得分:0)

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
    class StoreReceiveOrderRequest extends FormRequest
    {
       public function rules()
       {
         $rules = ['is_follow_up'=>'required',
           ];

         if (Input::get('is_follow_up')=='n') {
          $rules += [
             'note'=>'max:300'
          ];
         }
       }
    }

这就是我解决问题的方式