salut,
je vois le variable $article n'est pas defini
Bonjour,
Voila je rencontre un petit problème avec mon code.
Ce que je fais
Ce que je veux
je n'arrive pas a uploader mes fichiers
Ce que j'obtiens
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
16 réponses
oui j'ai deja changé mon code :
{!! Form::open(array('action' => 'ArticleController@store', 'method' => 'post' )) !!}
<input type="hidden" name="user_id" value="1">
<div class="form-group m-b-20">
<label for="exampleInputEmail1">Titre</label>
<input type="text" class="form-control" name='title' id="exampleInputEmail1" placeholder="Saisir titre">
</div>
<div class="form-group m-b-20">
<label for="videourl">Video URL</label>
<input type="text" name="video_link" class="form-control" id="videourl" placeholder="Saisir url..">
</div>
<div class="form-group m-b-20">
<input type="file" name="files[]" multiple="multiple" >
</div>
<div class="form-group m-b-20">
<label>Description</label>
<textarea class="summernote" name="description"></textarea>
</div>
<button type="submit" class="btn btn-success waves-effect waves-light">Enregistrer et publier</button>
<button type="button" class="btn btn-danger waves-effect waves-light">Annuler</button>
{!! Form::close() !!}
et dans le controlleur:
public function store(Request $request)
{
Article::create($request->all());
$article = New Article();
$article->user_id = $request->get('user_id');
$article->title = $request->get('title');
$article->description = $request->get('description');
$article->save();
if($request->hasFile('files')):
foreach ($request->file('files') as $file) :
$path = '../articles/uploads';
$titre = $file->getClientOriginalName();
$file->move($path, $titre);
$fichier = New Articlefile();
$fichier->article_id = $article->id;
$fichier->title = $title;
$fichier->path = $path;
$fichier->save();
endforeach;
endif;
return redirect('articles');
}
Salut,
Tu as fais un dd($request->file('files')) voir si tu as bien les infos sur les fichiers que tu souhaites envoyer ?
De plus, quand tu dis "ça marche pas", tu parles de l'upload des fichiers ? De la persistance de tes data en BD ? Du redirect ? D'autre chose ?
je parle de l'upload des fichiers .j'ai changé le code de mon controlleur a ça
Tu as bien les permissions en écriture pour le dossier dans lequel tu souhaites move tes fichiers ?
Et je pense que le chemin est faux : s'il se trouve dans ton dossier public, tu dois utiliser le helper $path = public_path() . '/uploads/articles' (à moins que tu aies configurer les chemins dans le fichier de config storage.php ?)
comment je sais si j'ai les permissions en ecritutre?
oui il se trouve sous le dossier public (C:\xampp\htdocs\projet\public\uploads\articles) j'ai changé le path mais rien n'est enregistre dans ma table
Laravel te retourne une erreur ?
Si tu utilises Laravel 5.1+, essaye ceci (non testé) :
Après, je ne sais pas d'où vient la méthode move, c'est une méthode de ton modèle ?
Jette un oeil à ceci : https://laravel.com/docs/5.4/requests#files
Sinon, tu peux utiliser un simple try/catch voir si la méthode move ne renvoie pas d'exception.
Si tu utilises Laravel 5.3+, jette un oeil au File Storage.
Bonjour,
enctype="multipart/form-data" ??? Tu as ça dans ton formulaire?
oui {!! Form::open(array('action' => 'ArticleController@store', 'method' => 'post','files'=>'true' ,'enctype'=>'multipart/form-data' )) !!}
Hum, quand tu fais
ton $request->get('files') sera un tableau et non un objet de type File, de ce fait ta condition
retournera toujours false. Ce que tu peux essayer c'est faire un foreach sur $request->get('files') pour chaque file tu fais ta condition if($file->hasFile('files'))
que j'ai jamais testé, oubien
j'ai changé mon code à ça c'est correcte? (je suis un debutant)
public function store(Request $request)
{
$article = New Article();
$article->user_id = $request->get('user_id');
$article->title = $request->get('title');
$article->description = $request->get('description');
$article->save();
$request->file('files');
foreach ($request as $file){
if($request->hasFile('files')){
$path = public_path() . '/uploads/articles';
$extension = $file->getClientOriginalExtension();
$titre = $file->getClientOriginalName();
$filename = str_random(4).'_'.$titre.'.'.$extension;
$file->move($path, $filename);
$fichier = New Articlefile();
$fichier->article_id = $article->id;
$fichier->title = $title;
$fichier->path = $path.'/'.$filename;
$fichier->save();
}
}
return redirect('articles');
}
Change ton
en
et testes pour voir si ça marche
j'ai changé mon controlleur à ça
mais quand je veux acceder a la page de creation ça me donne cette erreur:ErrorException in HtmlBuilder.php line 464:
Array to string conversion (View: C:\xampp\htdocs\projet\resources\views\articles\create.blade.php)
voici la vue:
Lis bien l'erreur, ça te dit Array to string conversion, regarde tes tableaux et essais de debuguer.
L'upload marche parfaitement maitenant multiple et tout type de fichiers voici le code du controlleur
et la vue :
Merci pour votre aide les gars :D
OK, mets ça en résolu.