API загружает изображение из ионной в Laravel Back End

так что я пытаюсь загрузить изображение из ионного приложения в проблему веб-приложения 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.

Любой метод, который я пробовал от Google, но ни один из них не работает.
Спасибо.

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);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]