Bonjour,

En ce moment j'essaie d'apprendre le framework Laravel, et j'ai un problème sur l'upload de fichier.
J'ai deux types de fichiers dans ma base de données, image et PDF.

Pour les images, tout fonctionne, mais pas pour les pdf. Quelqu'un pourrait me donner une piste vers la solution, ou me dire ce qui ne vas pas s'il vous plaît.

ma vue :

<form method="POST" action="{{ url('/new/'.$data->libelle) }}" enctype="multipart/form-data">
            {{ csrf_field() }}
            @if ($data->id !=9) <!-- if category != PDF -->
            <label for="upload">Image :</label>
            <input type="file" name="upload" />
            @else <!-- else category == PDF -->
            <label for="upload_pdf">PDF :</label>
            <input type="file" name="upload_pdf" />
            @endif
            @if (count($data->langues) > 0)

                @foreach ($data->langues as $langue)
                <h3>{{ $langue->libelle }}</h3>
                <input type="text" name="titrel{{ $langue->id }}" placeholder="Title {{ $langue->libelle }}" value-"{{old("titre")}}" />
                @if ($data->id != 7 && $data->id !=9)
                <label for="descriptionl{{ $langue->id }}">Description {{ $langue->libelle }}</label>
                <textarea type="text" name="descriptionl{{ $langue->id }}" placeholder="Description {{ $langue->libelle }}" value-"{{old("description")}}"></textarea>
                @endif
                @endforeach

            @endif
            <input type="submit" value="Create" />
        </form>

mon controller :

public function store(Request $request,$id){
            $categorie = Categorie::where('libelle',$id)->first();
            if($categorie == null)
                return redirect("/home");
            $validation=['upload' => 'required|image'];
            $validation=['upload_pdf' => 'required|mimes:pdf|max:10000'];
            $langues=Langue::all();
            foreach ($langues as $key => $value) {
                $validation["titrel".$value->id]='max:255';
                $validation["descriptionl".$value->id]='max:1000';
            }
            $this->validate($request, $validation);
            $article= new Article;
            $file=$request->file('upload');
            $article->url=$file->getClientOriginalName();
            $article->idcategorie=$categorie->id;

            $new=new File();
            $pdf=$request->pdf('upload_pdf');
            $new->idCategorie=$categorie->id;
            $new->url=$pdf->getClientOriginalName();

            DB::beginTransaction();
                try{
                $article->save();
                $article->url=$article->id."-".$article->url;
                $path=storage_path('app/public/'.$categorie->libelle);
                if(!Filemgr::exists($path)) {
                    Filemgr::makeDirectory($path.'/mini', 0766, true);
                    Filemgr::makeDirectory($path.'/micro', 0766, true);
                }            
                Image::make($file)
                    ->resize(1400, null, function ($constraint) {
                        $constraint->aspectRatio();
                    })
                    ->save($path.'/'.$article->url);
                Image::make($file)
                    ->resize(900, null, function ($constraint) {
                    $constraint->aspectRatio();
                    })
                    ->save($path.'/mini/'.$article->url);
                Image::make($file)
                    ->resize(600, null, function ($constraint) {
                        $constraint->aspectRatio();
                    })
                    ->save($path.'/micro/'.$article->url);
                $article->save();

                $new->save();
                $new->url=$new->id."-".$new->url;
                $path = $request->upload->storeAs('public/'.$categorie->libelle.'s', $new->url);
                $new->save();

                foreach($langues as $key=>$value){
                    $text=new Textarticle;
                    $text->titre=$request->input('titrel'.$value->id);
                    $text->description=$request->input('descriptionl'.$value->id);
                    $text->idarticle=$article->id;
                    $text->idlangue=$value->id;
                    $text->save();
                }
                DB::commit();
                }
                catch(Exception $e){
                    DB::rollBack();

                }
            return redirect("/categorie/".$categorie->libelle);
        }

Je vous remercie :)

1 réponse


La seule erreur est que l'upload du pdf a échoué
le fichier n'est effectivement pas créé :/

Je vais vérifier tout ça, car en effet j'ai une classe File en model