IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Laravel PHP Discussion :

Affichage d'images uploadées [5.6]


Sujet :

Laravel PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Points : 42
    Points
    42
    Par défaut Affichage d'images uploadées
    Bonjour tout le monde,

    Je tente d'afficher des image uploadés par l'utilisateur et utilisant le storage interne. J'ai fais de nombreuses méthodes, de nombreux testes, parfois tout semble concordé et pourtant, aucun affichage.

    Je vous montre l'étape dans laquelle je suis actuellement:


    Front-end:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <form id="{{ $product->id }}" method="POST" action="{{ route('uploadImage') }}" enctype="multipart/form-data">
                    @csrf
                    <input type="hidden" name="ID" name="ID" value="{{ $product->id  }}">
                    <div class="form-group row">
                        <label for="Description" class="col-sm-2 col-form-label">Description {{ $product->support }} -
                            @if($product->support === "Promotion Petit Format")
                                250
                             @else
                                520
                            @endif caractères maximum</label>
                        <div class="col-sm-10">
                            @if($product->support === "Promotion Petit Format")
                                <textarea rows="4" cols="50" id="Description_FR" name="Description_FR" placeholder="FR" maxlength="200"></textarea>
                                <textarea rows="4" cols="50" id="Description_DE" name="Description_DE" placeholder="DE" maxlength="200"></textarea>
                                <textarea rows="4" cols="50" id="Description_IT" name="Description_IT" placeholder="IT" maxlength="200"></textarea>
                            @else
                                <textarea rows="4" cols="50" id="Description_FR" name="Description_FR" placeholder="FR" maxlength="520"></textarea>
                                <textarea rows="4" cols="50" id="Description_DE" name="Description_DE" placeholder="DE" maxlength="520"></textarea>
                                <textarea rows="4" cols="50" id="Description_IT" name="Description_IT" placeholder="IT" maxlength="520"></textarea>
                            @endif
                        </div>
                    </div>
                    <div class="form-group row">
                        <label for="Image" class="col-sm-2 col-form-label">Image</label>
                        <div class="col-sm-10">
                            <input type="file" name="images[]" id="images" multiple />
                        </div>
                    </div>
                    <div class="form-group row">
                        <label for="Image" class="col-sm-2 col-form-label"></label>
                        <div class="col-sm-10">
                            <input type="submit" class="btn btn-success" value="Envoyer" />
                        </div>
                    </div>
                </form>
    Controller/upload:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    public function uploadImage(Request $request)
        {
            //FindOrFail is always better.
            $product = Product::findOrFail($request->ID);
     
            $errors = [];
            $errorFound = false;
            if($product->description_fr === NULL && $product->description_de === NULL && $product->description_it === NULL && $product->imageURL === NULL)
            {
                if($request["Description_FR"] === NULL && $request["Description_DE"] === NULL && $request["Description_IT"] === NULL)
                {
                    array_push($errors, "Au moins une description doit être donnée au produit.");
                    $errorFound = true;
                }
                if(!$request->hasFile('images'))
                {
                    array_push($errors, "Au moins une image est obligatoire.");
                    $errorFound = true;
                }
     
            }
     
            if($errorFound)
                return back()->with('errors', $errors);
     
            if($request["Description_FR"] != NULL)
                $product->description_fr = $request["Description_FR"];
            if($request["Description_IT"] != NULL)
                $product->description_it = $request["Description_IT"];
            if($request["Description_DE"] != NULL)
                $product->description_de = $request["Description_DE"];
     
            $imagesPath = [];
            if($request->images != NULL)
            {
                if(is_array($request->file('images')) || is_object($request->file('images')))
                {
                    foreach ($request->file('images') as $key => $image)
                    {
                        if ($request->file('images')[$key]->isValid())
                        {
                            $path = $request->file('images')[$key]->storePublicly('uploads/images');
                            array_push($imagesPath, $path);
                        }
                        else {
                            array_push($errors, "Erreur dans le traitement de l'image.");
                            return back()->with('errors', $errors);
                        }
                    }
     
                }
            }
            $product->imageURL = serialize($imagesPath);
            $product->completed = true;
            $product->save();
     
            return back()->with('success', 'Les données ont été mises à jour avec succès.');
        }
    Résultat retourné pour 1 image uploadé en base de donnée:
    a:1:{i:0;s:60:"uploads/images/oGP6CIHc3Aj9l7Msb4Cet0lofwfmPTswv4lVHop2.jpeg";}


    Controller/details:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function details($id)
        {
            $product = Product::findOrFail($id);
            $unserialized_images = unserialize($product->imageURL);
            return view("details", ["product" => $product->first(), "images" => $unserialized_images]);
        }
    détails.blade.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @foreach ($images as $image)
                <img src="{{ Storage::disk('public')->url($image) }}">
                @endforeach
    url retournée:
    <img src="http://localhost/storage/uploads/images/oGP6CIHc3Aj9l7Msb4Cet0lofwfmPTswv4lVHop2.jpeg">

    error 404. Alors j'adapte manuellement et mets:
    <img src="http://localhost:8000/storage/app/uploads/images/oGP6CIHc3Aj9l7Msb4Cet0lofwfmPTswv4lVHop2.jpeg">

    Tel que stocké physiquement sur le disque:

    Nom : Capture.JPG
Affichages : 2758
Taille : 14,3 Ko

    mais avec la même erreur j'ai déjà eu été plus précis:
    Nom : Capture.JPG
Affichages : 2826
Taille : 220,1 Ko

    Il est impossible d'afficher l'image ! :/

    Dans l'espoir que vous pourrez m'aider
    Cordialement,

    yagaam

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Bonjour tout le monde,

    j'ai fait une petite percée dans mon soucis. Le répertoir ne semble pas être bien linké ou alors mon upload ne va pas au bon endroit comme le montre la figure suivante:

    Nom : Capture.JPG
Affichages : 2744
Taille : 31,4 Ko

    Mon problème est que je ne sais pas comment faire pour uploader dans ce répertoire là et pas dans l'autre.

    Par ailleurs j'ai du modifier manuellement l'url dans l'html pour obtenir celle-ci et me rendre compte qu'à un moment donné j'avais le bon upload :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://localhost:8000/storage/products/S6El5SIzYjFpiwUIIQ3hJFANXrSYNNyWU61GR7dW.png">
    Si cela peut vous aider à m'aider
    Cordialement,

    yagaam

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2016
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Solutions trouvé !

    Dans le controller:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $path = 'public/products';
                            $file = $request->file('images')[$key];
                            $logoname = 'logo.'.$file->getClientOriginalExtension();
                            $file->storeAs($path,$logoname);
                            array_push($imagesPath, "storage/products/".$logoname);
    Dans le frontend:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="{{ asset($image) }}" />
    Le fichier s'enregistre dans public/storage/products/logo.jpg
    et l'url généré est: http://localhost:8000/storage/products/logo.jpg

    cordialement
    Cordialement,

    yagaam

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WB12] Image Uploadée dans BDD et affichage
    Par kalimero95 dans le forum WebDev
    Réponses: 11
    Dernier message: 25/08/2014, 11h50
  2. Affichage d'images uploadées
    Par SinDromX dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 16/01/2013, 23h40
  3. [1.x] probléme d'affichages des images uploadés
    Par sou1987 dans le forum Symfony
    Réponses: 4
    Dernier message: 27/04/2010, 10h22
  4. [Upload] affichage d'image uploadée
    Par bernard26000 dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2007, 18h17
  5. [Upload]utilitaire de gestion de site web: affichage d'image
    Par CR_Gio dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 02/04/2006, 01h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo