Laravel : $request->hasFile() ne fonctionne pas
J'ai un formulaire où je reçois le title
,description
et un image
. Quand je dd($requests->all());
, Il renvoie à l'issue de laquelle est correcte.
array:4 [
"projectTitle" => "asd"
"project_description" => "asd"
"project_image" => "15940723_1336567063030425_9215184436331587115_n.jpg"
"_token" => "eUj27iioySvIgut5Afu0ZHMgeVrO99a9e1o7Tw0w"
]
Et je suis stocker les valeurs comme :
$project = new Portfolio;
$project->freelancer_id = Auth::user()->id;
$project->title = $request->get('projectTitle');
$project->description = $request->get('project_description');
if($request->hasFile('project_image')){
$project_image = $request->file('project_image');
$filename = time() . '.' . $project_image->getClientOriginalExtension();
Image::make($project_image)->resize(197, 137)->save( public_path('/uploads/portfolios/' . $filename ) );
$project->img = $filename;
}
$project->save();
Mais la img
DB des champs de la table devient nulle.
La if($request->hasFile('project_image'))
n'est pas le domaine,
Aussi j'ai la forme, où la méthode est POST
et ont enctype="multipart/form-data"
et une pour le fichier j'ai <input type="file" name="project_image" id="project_image">
.
Qu'ai-je fait de mal?
- vous devrez peut-être ajouter -> enctype="multipart/form-data" .... à votre formulaire pour elle de le voir en tant que fichier au lieu de string.
Vous devez vous connecter pour publier un commentaire.
L'erreur n'est pas dans votre backend code. Dirait que c'est une erreur dans votre frontend code.
Comme vous pouvez le voir à la sortie de dd($request->tous les()) renvoyé
Votre
project_image
est juste une chaîne alors qu'elle devrait avoir été un objet UploadedFile/instance comme suit:Si tout va corriger dans votre code, alors vous pourriez être à côté de la enctype, j'avais aussi raté au démarrage,
Ou si vous utilisez le Formulaire Helper, qui enctype facilement inclus avec fichier=true champ.
Assurez-vous d'avoir un
'file' => true
option dans votre définition de formulaire comme ci-dessous:Cette option fait en sorte que votre formulaire sera rendu avec
enctype="multipart/form-data"
option dans le formulaire HTML (balise), qui est obligatoire de télécharger un fichier à l'aide deform
Ou, si vous utilisez le formulaire html, alors assurez-vous d'avoir
enctype="multipart/form-data"
comme:Vous devez vérifier la directive php upload_max_filesize en php.ini.
Généralement sa taille est de 2M définie comme valeur par défaut.
Si vous transférez des fichiers plus grand que cette taille
Laravel fonction
sera de retour faux
Espère que cela aide!!
Est le fichier étant stockées sur le serveur? Parce que vous mentionner que le
project_image
champ est null, mais vous n'êtes jamais épargnent rien pourproject_image
, mais vous ne vous essayez d'enregistrer à laimg
champ avec$project->img = $filename;
img
.