【问题标题】:API upload image from ionic to laravel back endAPI 将图像从 ionic 上传到 laravel 后端
【发布时间】:2018-08-30 18:03:10
【问题描述】:

所以我正在尝试将图像从 ionic 应用程序上传到 laravel Web 应用程序问题,我不知道该怎么做,我的控制器看起来像这样

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()]);
    }

}

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

我从谷歌尝试过的任何方法,但它们都不起作用。 谢谢。

【问题讨论】:

  • 如果你收到 base64 格式的图像,然后再次将其重新转换为图像

标签: php laravel api ionic-framework ionic3


【解决方案1】:

我正在使用 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);

【讨论】:

  • 也感谢您的回复,这很有效。再次感谢各位兄弟。 list($type, $data) = explode(';', $data); list(, $data) = explode(',', $data); $data = base64_decode($data); file_put_contents($imgname, $data);
猜你喜欢
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 1970-01-01
  • 2021-10-27
  • 2018-03-28
  • 1970-01-01
相关资源
最近更新 更多