Support the ongoing development of Laravel.io →
Validation JavaScript Laravel

I get this error when I try to save a file. my route:

Route::post('/file-upload', [DocumentController::class, 'fileUpload'])->name('file.upload'); 

my controller :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; // Importe Auth
use App\Repositories\DocumentRepository; // Importe le DocumentRepository
use Illuminate\Support\Facades\Log;
class DocumentController extends Controller
{
    // Propiété pour stocker le référentiel DocumentRepository
    protected $documentRepository;

    // Contructeur pour injecter le référentiel dans le controller
    public function __construct(DocumentRepository $documentRepository)
    {
        $this->documentRepository = $documentRepository;
    }

    public function fileUpload(Request $request)
    {
        try {
            Log::info('Requête reçue: ', $request->all());

            $request->validate([
                'type_document_id' => 'required|string',
                'nom' => 'required|string',
                'confidentiel' => 'boolean',
                'commentaire' => 'nullable|string',
                'fichier' => 'nullable|file|mimes:jpeg,jpg,png,pdf,doc,docx|max:2048',
            ]);

            $path = null;

            if ($request->hasFile('fichier')) {
                $path = $request->file('fichier')->store('documents');
                Log::info('Fichier stocké à: ' . $path);
            }

            $data = [
                'type_document_id' => $request->type_document_id,
                'nom' => $request->nom,
                'confidentiel' => $request->confidentiel ?? 0,
                'commentaire' => $request->commentaire,
                'file_path' => $path,
            ];

            $document = $this->documentRepository->create($data);
            Log::info('Document enregistré dans la base de données: ' . $document->id);

            return redirect()->back()->with('success', 'Document téléchargé avec succès.');
        } catch (\Exception $e) {
            Log::error('Erreur lors du stockage du document: ' . $e->getMessage());
            return redirect()->back()->with('error', 'Une erreur s\'est produite lors du téléchargement du document.');
        }
    }
}

my javascript:

(function () {
    "use strict";

    Dropzone.autoDiscover = false;

    var myDropzone = new Dropzone("#my-awesome-dropzone", {
        url: "{{ route('file.upload') }}",
        autoProcessQueue: false,
        uploadMultiple: true,
        parallelUploads: 5,
        maxFiles: 5,
        addRemoveLinks: true,
        acceptedFiles: ".jpeg,.jpg,.png,.pdf,.doc,.docx",
        init: function() {
            var dz = this;

            document.querySelector("#submit-all").addEventListener("click", function(e) {
                e.preventDefault();
                if (dz.getQueuedFiles().length > 0) {
                    dz.processQueue();
                } else {
                    alert("Veuillez sélectionner au moins un fichier avant de soumettre.");
                }
            });

            this.on("sendingmultiple", function(files, xhr, formData) {
                var documentType = document.querySelector("#documentType");
                var nomDocument = document.getElementById("nom_document");
                var confidentiel = document.querySelector("#confidentiel");
                var commentaire = document.getElementById("commentaire");
                var fichier = document.getElementById("fichier");

                if (documentType) formData.append("type_document_id", documentType.value);
                if (nomDocument) formData.append("nom", nomDocument.value);
                if (confidentiel) formData.append("confidentiel", confidentiel.checked ? 1 : 0);
                if (commentaire) formData.append("commentaire", commentaire.value);

                if (fichier && fichier.files.length > 0) {
                    for (let i = 0; i < fichier.files.length; i++) {
                        formData.append("fichier[]", fichier.files[i]);
                    }
                }
            });

            this.on("successmultiple", function(files, response) {
                alert("Fichiers téléchargés avec succès !");
                $('#myModal').modal('hide');
                dz.removeAllFiles();
            });

            this.on("errormultiple", function(files, response) {
                console.error("Erreur d'upload", response);
            });

            this.on("error", function(file, errorMessage, xhr) {
                if (xhr && xhr.status === 422) {
                    var errors = JSON.parse(xhr.responseText);
                    Object.keys(errors.errors).forEach(function(key) {
                        console.log(key + ": " + errors.errors[key]);
                    });
                }
            });
        }
    });
})();

my view:

<!-- BEGIN: Modal Toggle -->
                    <div class="text-center">
                        <a href="javascript:;" data-tw-toggle="modal" data-tw-target="#basic-modal-preview" class="btn btn-primary">Ajouter pièce jointe</a>
                    </div>
                    <!-- END: Modal Toggle -->
                    <!-- BEGIN: Modal Content -->
                    <div id="basic-modal-preview" class="modal" tabindex="-1" aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-body p-10 text-center">
                                    <!-- BEGIN: Multiple File Upload -->
                                    <div class="intro-y box mt-5">
                                        <div id="multiple-file-upload" class="p-5">
                                            <div class="preview">
                                                <form action="{{ route('file.upload') }}" class="dropzone" id="my-awesome-dropzone" method="post" enctype="multipart/form-data">
                                                    @csrf
                                                    <div class="mb-3">
                                                        <label for="documentType" class="form-label">Type de document 
                                                            <span class="text-danger">*</span>
                                                        </label>
                                                        <select id="documentType" class="form-select" name="type_document_id" required>
                                                            <option value="">Choisir</option>
                                                            @foreach ($typeDocs as $id => $libelle)
                                                                <option value="{{ $id }}" {{ old('type_document_id') == $id ? 'selected' : '' }}>{{ $libelle }}</option>
                                                            @endforeach
                                                        </select>
                                                    </div>
                                                    <div class="form-group">
                                                        <label for="nom_document">Nom du document</label>
                                                        <input type="text" name="nom" id="nom_document" class="form-control">
                                                    </div>
                                                    <div class="form-group">
                                                        <label for="confidentiel">Ce document est-il confidentiel ?</label>
                                                        <input type="checkbox" name="confidentiel" id="confidentiel" value="1">
                                                    </div>
                                                    <div class="form-group">
                                                        <label for="commentaire">Commentaire</label>
                                                        <textarea name="commentaire" id="commentaire" class="form-control"></textarea>
                                                    </div>
                                                    <div class="fallback">
                                                        <input name="fichier" id="fichier" type="file" multiple/>
                                                    </div>
                                                    <div class="dz-message" data-dz-message>
                                                        <div class="text-lg font-medium">Déposez les fichiers ici ou cliquez pour télécharger.</div>
                                                    </div>
                                                </form>
                                            </div>
                                        </div>
                                        <!-- Boutons de soumission et annulation -->
                                        <div class="mt-3 text-right">
                                            <button type="button" class="btn btn-secondary" data-tw-dismiss="modal">Annuler</button>
                                            <button type="button" class="btn btn-primary" id="submit-all">Soumettre</button>
                                        </div>
                                    </div>
                                    <!-- END: Multiple File Upload -->
Last updated by @tvbeek 9 months ago.

durgeshdy liked this thread

1
moderator

@othniel_dev Can you tell us what the error is that you get?

Ps. I have updated your post to get the codeblocks working for all the code :)

durgeshdy liked this reply

1

Sign in to participate in this thread!

Eventy

Your banner here too?

Moderators

We'd like to thank these amazing companies for supporting us

Your logo here?

Laravel.io

The Laravel portal for problem solving, knowledge sharing and community building.

© 2025 Laravel.io - All rights reserved.