вызов функции-члена getClientOriginalName() по null с использованием laravel
Когда я пытаюсь загрузить изображения, я продолжаю получать следующую ошибку. Кто-нибудь знает, как это решить? Я не понимаю, что делать дальше.
Вызов функции-члена getClientOriginalName() при значении null
https://flareapp.io/share/dmkydl73
Контроллер
public function singalprojectaction(Request $request)
{
$validation = validator::make($request->all(), [
'select_file_one' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'select_file_Two' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'select_file_Three' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'select_file_Four' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'select_file_Five' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
if ($validation->passes()) {
$select_project = $request->get('select_project');
$project_name = $request->get('project_name');
$Client_name = $request->get('Client_name');
$Completion_date = $request->get('Completion_date');
$Duration = $request->get('Duration');
$Description = $request->get('Description');
$select_file_one = $request->file('select_file_one');
$select_file_Two = $request->file('select_file_Two');
$select_file_Three = $request->file('select_file_Three');
$select_file_Four = $request->file('select_file_Four');
$select_file_Five = $request->file('select_file_Five');
$new_name_one = mt_rand().'.'.$select_file_one->getClientOriginalName();
$select_file_one->move(public_path('projects'), $new_name_one);
$new_name_Two = mt_rand().'.'.$select_file_Two->getClientOriginalName();
$select_file_Two->move(public_path('projects'), $new_name_Two);
$new_name_Three = mt_rand().'.'.$select_file_Three->getClientOriginalName();
$select_file_Three->move(public_path('projects'), $new_name_Three);
$new_name_Four = mt_rand().'.'.$select_file_Four->getClientOriginalName();
$select_file_Four->move(public_path('projects'), $new_name_Four);
$new_name_Five = mt_rand().'.'.$select_file_Five->getClientOriginalName();
$select_file_Five->move(public_path('projects'), $new_name_Five);
$query = DB::table('single_portfolio')->insert([
'project_id' => $select_project, 'Project_name' => $project_name,
'Client_Name' => $Client_name, 'Completion_date' => $Completion_date
, 'Duration' => $Duration, 'Description' => $Description, 'image_one' => $new_name_one, 'image_two' =>
$new_name_Two,
'image_three' => $new_name_Three, 'image_four' => $new_name_Four, 'image_five' => $new_name_Five
]);
if ($query) {
return redirect()->back()->with('messages', 'Data Is Successfully Inserted');
}
}
return redirect()->back();
}
2 ответа
Из того, что я могу сказать $request->file('select_file_Two');
возвращается null
; Это означает, что, скорее всего, для ввода с именем не было выбрано ни одного файла.select_file_Two
, убедитесь, что имена совпадают, а не select_file_two
. Если требуются все файлы, вы можете добавитьrequired
валидатору вот так
`require|image|mimes:jpeg,png,jpg,gif,svg|max:2048`
или, если они являются необязательными, вы можете проверить, существует ли файл до этого, например
if(!is_null($select_file_one)){
$new_name_one = rand() . '.' . $select_file_one->getClientOriginalName();
$select_file_one->move(public_path('projects'), $new_name_one);
}
и проверить все файлы, которые не были отправлены.
Также следует отметить, что вы используете rand() для создания нового имени, которое может со временем перезаписать файлы. Я бы посоветовал добавить такую метку времени
use Carbon\Carbon;
$name = rand() . '_' . now()->timestamp . '.' . $image->getClientOriginalExtension();
Если с вашими кодами все в порядке, что кажется так, в большинстве случаев вы используете HTML-форму. взгляните на свою форму и посмотрите,enctype="multipart/form-data"
включен в ваш тег формы, иначе файлы не будут отправлены. часть формы отверстия должна быть такой:
<form method="post" enctype="multipart/form-data" action="URL">
</form>