#laravel #laravel-8
Вопрос:
Я пытаюсь сохранить изображение base64, полученное из сообщения ajax (блейд-файл). Ниже приведен код, который я использую для сохранения данных, но он выдает ошибку 500.
public function add_ref_images_first(Request $request){
$fileName = "";
$end_url = "";
$count = 0;
$folder_name = 'PUBP' . time();
foreach ($request->images as $data){
$image_64 = $data['src']; //your base64 encoded data
$extension = explode('/', explode(':', substr($image_64, 0, strpos($image_64, ';')))[1])[1]; // .jpg .png .pdf
$replace = substr($image_64, 0, strpos($image_64, ',') 1);
//
// // find substring fro replace here eg: data:image/png;base64,
//
$image = str_replace($replace, '', $image_64);
$image = str_replace(' ', ' ', $image);
$ref_image_id = 'PUBR'.time().$count .'.'.$extension;
$fileName = base64_decode($image)->storeAs($folder_name, $ref_image_id , ['disk' => 'my_uploaded_files']);
if($imageName){
$end_url = $end_url.$imageName.',';
}
}
return response()->json(['url' => $end_url, 'id' => '1']);
}
Есть ли проблемы с кодом?
Комментарии:
1. проверьте каталог_проекта/хранилище/журналы/laravel.log
2. Я получаю этот ошибочный вызов функции-члена storeAs() в строке, Bcoz Я отправляю base64 для хранения
Ответ №1:
вместо строки
$fileName = base64_decode($image)->storeAs($folder_name, $ref_image_id , ['disk'
=> 'my_uploaded_files']);
вы можете сделать :
use IlluminateSupportFacadesStorage;
Storage::put($ref_image_id, base64_decode($image), 'local');
поскольку в основном вы пытались использовать storeAs для строкового значения, storeAs работает с $request->file(‘nameFromForm’)
ссылка: https://laravel.com/docs/8.x/filesystem
https://laravel.com/docs/8.x/filesystem#specifying-a-file-name