Задача: загрузить изображение на сервер s3
Код работает правильно в моей локальной системе и файл правильно сохраняется на сервере s3, но когда я sh этот код на сервере, он дает мне ошибку hashName .
Error: Call to a member function hashName() on null in file /var/www/html/doctring-api/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 240
Код для Image Helper
<?php
namespace App\Helpers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
class UserHelper
{
public static function uploadImage($image)
{
try {
if (count(explode("data:image/", $image)) > 1) {
$fileName = \Carbon\Carbon::now()->timestamp . '_' . uniqid() . '.' . explode('/', explode(':', substr($image, 0, strpos($image, ';')))[1])[1];
$image = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '',$image));
Storage::disk('s3')->put($fileName, $image, 'public');
return $fileName;
}
return true;
} catch (\Exception $e) {
return false;
}
}
}
Контроллер Api
public function uploadPrescription(Request $request){
$validator = Validator::make($request->all(), [
'patient_id' => 'required',
'appointment_id' => 'required',
'prescription' => 'required'
]);
if($validator->fails()){
return $this->sendError('Validation Error.', $validator->errors());
}
$input = $request->all();
$status_check = Appointment::where('id','=',$input['appointment_id'])->first();
if($status_check->status == 'OnGoing'){
//upload prescription(image in base64) to s3 bucket
if($request->has('prescription'))
{
$imageName = UserHelper::uploadImage($request->prescription);
$input['image_url'] = $imageName;
}
$data=[
'patient_id' => $input['patient_id'],
'appointment_id' => $input['appointment_id'],
'prescription'=> $imageName
];
//Uploading Prescription only one record
// $profile = Prescriptions::updateOrCreate(Arr::except($data, 'prescription'), $data);
$profile = Prescriptions::updateOrCreate($data);
return response()->json(['message' => "Prescription Uploaded", 'profile'=> $profile, 'error'=> 0, 'status'=> 1 ]);
}else{
return response()->json(['message' => "Prescription Uploading Failed", 'error'=> 1, 'status'=> 0 ]);
}
}