API从离子到laravel后端上传图像

时间:2018-03-21 14:45:12

标签: php laravel api ionic-framework ionic3

所以我试图将图像从离子应用上传到laravel网络应用程序问题我不知道如何做到这一点我的控制器看起来像这样

public function postDamage(Request $request){
    try{
        $damage = new damage();
        $damage->type           =   $request->input('type');
        $damage->address        =   $request->input('address');
        $damage->description    =   $request->input('description');
        $damage->solvedBy       =   $request->input('solvedBy');
        $damage->userToken      =   $request->input('userToken');
        $damage->opstina        =   $request->input('opstina');
        $damage->image          =   $request->input('image');

        /* $imgName="";
        if ($request->hasFile('image')) {

            $imgName = time().'.'.$image->getClientOriginalExtension();
            $destinationPath = public_path('/images');
            $image->move($destinationPath, $imgName);
            $this->save();

           return back()->with('success','Image Upload successfully');
        }
        $target_path = time().'.jpg';

        $imagedata = $request->input('image');
        $imagedata = str_replace('data:image/jpeg;base64,',$imagedata);
        $imagedata = str_replace('data:image/jpg;base64,',$imagedata);
        $imagedata = str_replace(' ', '+',$imagedata);
        $imagedata = base64_decode($imagedata);
        file_put_contents($target_path,$imagedata);
        $damage->image  =   $imagedata; */

        $damage->save();
        return response()->json(['response'=>'Штетата е пратено.']);
    }catch (\Exception $e){
            return response()->json(['response'=>$e->getMessage()]);
    }

}

现在我如何将一些数据与图像一起发布,但是图像要在服务器中上传。离子生成的图像在base64中。

我尝试从谷歌的任何方法,但没有一个工作。 谢谢。

1 个答案:

答案 0 :(得分:0)

我正在使用Spatie Laravel Medialibrary为我的laravel模型保存图像这里是一个git链接: https://github.com/spatie/laravel-medialibrary

然后在控制器

  if ($f = $request->file) {
      $img = explode(",", $f)[1];
      $base64data = str_replace(',', '', $img); 

      $item->addMediaFromBase64($base64data)
         ->usingFileName('original.jpg')
         ->toMediaCollection('item');
    }

现在你的情况可能是(未经测试)

     $img = explode(",", $f)[1];
     $base64data = str_replace(',', '', $img); 

     $imagedata = base64_decode($base64data);
     file_put_contents($target_path,$imagedata);