J'ai un formulaire où je reçois la title
, description
et une image
. Lorsque i dd($requests->all());
, le résultat suivant est correct.
array:4 [
"projectTitle" => "asd"
"project_description" => "asd"
"project_image" => "15940723_1336567063030425_9215184436331587115_n.jpg"
"_token" => "eUj27iioySvIgut5Afu0ZHMgeVrO99a9e1o7Tw0w"
]
Et je stocke 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 le champ de la table de base de données img
obtient la valeur null.
La if($request->hasFile('project_image'))
n'obtient pas le champ,
Aussi, j'ai forme où la méthode est POST
et avoir enctype="multipart/form-data"
et un fichier j'ai <input type="file" name="project_image" id="project_image">
.
Qu'est ce que j'ai mal fait?
L'erreur n'est pas dans votre code de base. On dirait que c'est une erreur dans votre code frontal.
Comme vous pouvez voir la sortie de dd ($ request-> all ()) retourné
array:4 [
"projectTitle" => "asd"
"project_description" => "asd"
"project_image" => "15940723_1336567063030425_9215184436331587115_n.jpg"
"_token" => "eUj27iioySvIgut5Afu0ZHMgeVrO99a9e1o7Tw0w"
]
Votre project_image
est juste une chaîne alors qu'il aurait dû s'agir d'un objet/instance UploadedFile comme ceci:
array:4 [
"projectTitle" => "asd"
"project_description" => "asd"
"project_file" => UploadedFile {#30
-test: false
-originalName: "15940723_1336567063030425_9215184436331587115_n.jpg"
-mimeType: "image/jpeg"
-size: 5126
-error: 0
}
"_token" => "eUj27iioySvIgut5Afu0ZHMgeVrO99a9e1o7Tw0w"
]
Si tout se corrige dans votre code, il se peut que vous manquiez leenctype, j'avais également manqué cela au démarrage,
<form action="{{ route('store') }}" method="POST" enctype="multipart/form-data">
Ou si vous utilisez Form Helper, cette enctype est facilement incluse dans le champfile = true.
{!! Form::open(['route' => ['store'], 'file' => true]) !!}
Assurez-vous d'avoir une option 'file' => true
dans votre définition de formulaire, comme ci-dessous:
{!! Form::open(['route' => ['uploadimage'], 'file' => true]) !!}
Cette option entraîne le rendu de votre formulaire avec l'option enctype="multipart/form-data"
dans la balise HTML, qui est obligatoire pour télécharger un fichier à l'aide de form
Ou, si vous utilisez un formulaire html, assurez-vous que vous avez enctype="multipart/form-data"
comme:
Vous devez vérifier la directive php upload_max_filesize dans le fichier php.ini.
En général, sa taille est 2M définie comme valeur par défaut . Si vous téléchargez un fichier supérieur à cette taille
Fonction de Laravel
$ request-> hasFile ()
retournera faux
J'espère que ça aide!!
Le fichier est-il stocké sur le serveur? Parce que vous mentionnez que le champ project_image
est null, mais que vous n'enregistrez jamais rien dans project_image
, mais que vous essayez de sauvegarder dans le champ img
avec $project->img = $filename;