大佬教程收集整理的这篇文章主要介绍了如何使“上传文件”成为可选的不需要 - Laravel 8,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图让用户选择是否要上传文件
这是完整的控制器代码:
<?php
namespace App\Actions\Fortify;
use App\Models\Team;
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\ValIDator;
use Laravel\Fortify\Contracts\CreatesNewUsers;
class CreateNewUser implements CreatesNewUsers
{
use passwordValIDationRules;
/**
* Create a newly registered user.
*
* @param array $input
* @return \App\Models\User
*/
public function create(array $input)
{
ValIDator::make($input,[
'name' => ['required','String','max:255'],'usertype' => ['required','firmtype4' => ['required','firmname' => ['required','comNum' => ['nullable','litNote' => ['required','linktocomp' => ['required','LOCATIOn' => ['required','sex' => ['required','BD' => ['required','IDnumb' => ['required','study' => ['required','workplace' => ['required','whatworkbefore' => ['nullable','SoicalmIDe' => ['required','kindofparti' => ['required','whyparti1' => ['required','prevparti2' => ['nullable','whyparti' => ['required','smalword' => ['required','vIDeolink' => ['nullable','applybefore' => ['required','howyoukNow' => ['required','email' => ['required','email','max:255','unique:users'],'password' => $this->passwordRules(),'fathername' => ['required','surname' => ['required','phone' => ['required','instagram' => ['nullable','twitter' => ['nullable','linkedin' => ['nullable',])->valIDate();
return DB::transaction(function () use ($input) {
$request = request();
if ($request->hasfile('uploadfile')) {
$profileImage = $request->file('uploadfile');
$profileImageSaveAsname = time() . "aa" . "-profile." . $profileImage->getClIEntOriginalExtension();
$upload_path = 'uploads/form1/';
$profile_image_url = $upload_path . $profileImageSaveAsname;
$success = $profileImage->move($upload_path,$profileImageSaveAsName);
}
$request2 = request();
if ($request2->hasfile('uploadfile2')) {
$profileImage2 = $request2->file('uploadfile2');
$profileImageSaveAsname2 = time() . "bb" . "-profile." . $profileImage2->getClIEntOriginalExtension();
$upload_path2 = 'uploads/form1/';
$profile_image_url2 = $upload_path2 . $profileImageSaveAsname2;
$success = $profileImage2->move($upload_path2,$profileImageSaveAsname2);
}
$request3 = request();
if ($request3->hasfile('uploadfile3')) {
$profileImage3 = $request3->file('uploadfile3');
$profileImageSaveAsname3 = time() . "cc" . "-profile." . $profileImage3->getClIEntOriginalExtension();
$upload_path3 = 'uploads/form1/';
$profile_image_url3 = $upload_path3 . $profileImageSaveAsname3;
$success = $profileImage3->move($upload_path3,$profileImageSaveAsname3);
}
$request4 = request();
if ($request4->hasfile('uploadfile4')) {
$profileImage4 = $request4->file('uploadfile4');
$profileImageSaveAsname4 = time() . "dd" . "-profile." . $profileImage4->getClIEntOriginalExtension();
$upload_path4 = 'uploads/form1/';
$profile_image_url4 = $upload_path4 . $profileImageSaveAsname4;
$success = $profileImage4->move($upload_path4,$profileImageSaveAsname4);
}
return tap(User::create([
'name' => $input['name'],'usertype' => $input['usertype'],'firmtype4' => $input['firmtype4'],'LOCATIOn' => $input['LOCATIOn'],'firmname' => $input['firmname'],'comNum' => $input['comNum'],'litNote' => $input['litNote'],'linktocomp' => $input['linktocomp'],'sex' => $input['sex'],'BD' => $input['BD'],'IDnumb' => $input['IDnumb'],'study' => $input['study'],'workplace' => $input['workplace'],'whatworkbefore' => $input['whatworkbefore'],'SoicalmIDe' => $input['SoicalmIDe'],'kindofparti' => $input['kindofparti'],'whyparti1' => $input['whyparti1'],'prevparti2' => $input['prevparti2'],'whyparti' => $input['whyparti'],'smalword' => $input['smalword'],'partifile' => $profile_image_url,'vIDeolink' => $input['vIDeolink'],'resume' => $profile_image_url4,'previswork' => $profile_image_url3,'applybefore' => $input['applybefore'],'comprofile' => $profile_image_url4,'howyoukNow' => $input['howyoukNow'],'extrapdf' => $profile_image_url2,'fathername' => $input['fathername'],'surname' => $input['surname'],'phone' => $input['phone'],'instagram' => $input['instagram'],'twitter' => $input['twitter'],'linkedin' => $input['linkedin'],'email' => $input['email'],'password' => Hash::make($input['password']),]),function (User $user) {
$this->createTeam($user);
});
});
}
/**
* Create a personal team for the user.
*
* @param \App\Models\User $user
* @return voID
*/
protected function createTeam(User $user)
{
$user->ownedTeams()->save(Team::forceCreate([
'user_iD' => $user->ID,'name' => explode(' ',$user->name,2)[0]."'s Team",'personal_team' => true,]));
}
}
如何使它可以为空?
我已更新问题以包含控制器的完整代码
现在我正面临着“未定义的变量:profile_image_url”
在我按照答案进行操作后,出现此错误
您可以使用 hasFile
$request = request();
if ($request->hasFile('uploadfile')) {
$profileImage = $request->file('uploadfile');
$profileImageSaveAsName = time() . "aa" . "-profile." . $profileImage->getClientOriginalExtension();
$upload_path = 'uploads/form1/';
$profile_image_url = $upload_path . $profileImageSaveAsName;
$success = $profileImage->move($upload_path,$profileImageSaveAsName);
}
参考:https://laravel.com/docs/8.x/requests#retrieving-uploaded-files
更新
根据您的代码,您需要传递 $request
return DB::transaction(function () use ($input) {
if (\request()->hasFile('uploadfile')) {
$profileImage = \request()->file('uploadfile');
$profileImageSaveAsName = time() . "aa" . "-profile." . $profileImage->getClientOriginalExtension();
$upload_path = 'uploads/form1/';
$profile_image_url = $upload_path . $profileImageSaveAsName;
$success = $profileImage->move($upload_path,$profileImageSaveAsName);
}
if (\request()->hasFile('uploadfile2')) {
$profileImage2 = \request()->file('uploadfile2');
$profileImageSaveAsName2 = time() . "bb" . "-profile." . $profileImage2->getClientOriginalExtension();
$upload_path2 = 'uploads/form1/';
$profile_image_url2 = $upload_path2 . $profileImageSaveAsName2;
$success = $profileImage2->move($upload_path2,$profileImageSaveAsName2);
}
if (\request()->hasFile('uploadfile3')) {
$profileImage3 = \request()->file('uploadfile3');
$profileImageSaveAsName3 = time() . "cc" . "-profile." . $profileImage3->getClientOriginalExtension();
$upload_path3 = 'uploads/form1/';
$profile_image_url3 = $upload_path3 . $profileImageSaveAsName3;
$success = $profileImage3->move($upload_path3,$profileImageSaveAsName3);
}
if (\request()->hasFile('uploadfile4')) {
$profileImage4 = \request()->file('uploadfile4');
$profileImageSaveAsName4 = time() . "dd" . "-profile." . $profileImage4->getClientOriginalExtension();
$upload_path4 = 'uploads/form1/';
$profile_image_url4 = $upload_path4 . $profileImageSaveAsName4;
$success = $profileImage4->move($upload_path4,$profileImageSaveAsName4);
}
,
$input = request::all();
$rules = array(
'name' => 'required|String|max:255','usertype' => 'required|String|max:255'
);
$validation = Validator::make($input,$rules,array());
if ($validation->fails()) {
$message = $validation->messages()->first();
return Response()->json(ResponseManager::getError(null,1,$messagE));
}
DB::begintransaction();
try {
$input['uploadfile1'] = null;
$input['uploadfile2'] = null;
$input['uploadfile3'] = null;
$input['uploadfile4'] = null;
if (request::hasFile('uploadfile')) {
$input['uploadfile1'] = $this->upload_file($input['uploadfile'],'uploads/form1');
}
if (request::hasFile('uploadfile2')) {
$input['uploadfile2'] = $this->upload_file($input['uploadfile2'],'uploads/form1');
}
if (request::hasFile('uploadfile3')) {
$input['uploadfile3'] = $this->upload_file($input['uploadfile3'],'uploads/form1');
}
if (request::hasFile('uploadfile4')) {
$input['uploadfile3'] = $this->upload_file($input['uploadfile4'],'uploads/form1');
}
$result = User::create($input);
DB::commit();
$message = 'success';
return Response()->json(ResponseManager::getResult(null,10,$messagE));
} catch (Exception $E) {
DB::rollBACk();
$message = $e->getmessage();
return Response()->json(ResponseManager::getError(null,8,$messagE));
}
简单制作一个上传文件的常用函数。
public static function upload_file($image,$store_path) {
$name = md5(uniqid(rand(),truE)) . str_replace(' ','-',$image->getClientOriginalName());
$image->move(public_path('/' . $store_path),$Name);
return $store_path . '/' . $name;
}
希望对你有用
以上是大佬教程为你收集整理的如何使“上传文件”成为可选的不需要 - Laravel 8全部内容,希望文章能够帮你解决如何使“上传文件”成为可选的不需要 - Laravel 8所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。