Bonjour,

J'aimerais savoir s'il est possible de déterminer le séparateur ",", ou ";" lors de l'upload d'un fichier csv. Dans mon formulaire, j'autorise les fichiers csv pour mettre à jour une base de donnée. Je passe par du javascript car je souhaitais faire un système asynchrone car le traitement est long donc pas génial en php. Bref pour éviter des problèmes, j'aimerais vraiment filtrer le type de csv au moment de l'upload. Avez vous une idée de comment procéder ? Pour le moment je donne mon code qui fonctionne.

var allowedTypes = ['csv'],
        fileType = ['text/csv', 'application/vnd.ms-excel'],
        fileInput = document.querySelector('#optimumCSV'),
        message = document.querySelector('#message'),
        button = document.querySelector('#optimumSubmit');

    if(fileInput){
        fileInput.addEventListener('change', function() {

            var files = this.files,
                fileExt;

            fileExt = files[0].name.split('.');
            fileExt = fileExt[fileExt.length - 1];
            if (allowedTypes.indexOf(fileExt) != -1 && fileType.indexOf(files[0].type)) {
                $('#optimumSubmit').removeClass('disabled');
                message.innerHTML = '<p class="alert alert-success">Votre fichier va être envoyé au serveur</p>';

            }else{
                message.innerHTML = '<p class="alert alert-danger">Veuillez choisir un fichier CSV</p>';
            }

        });
    }

4 réponses


Salut,

Je ne pense pas que tu puisses lire le contenu d'un fichier directement depuis ton navigateur. Il faut donc faire les vérifications côté serveur et renvoyer une erreur si le format n'est pas le bon.

cid5420
Auteur

Ok c'est ce que je me suis dit mais bon... dommage pour moi ! Merci du retour.

Pas de quoi, après il n'y a rien de bien compliqué : tu parses ton CSV (via une librairie ou même un simple file_get_contents()) et tu check le séparateur ;)

cid5420
Auteur

Oui c'est ce que je viens de faire mais il a un truc qui est bizard, j'enregistre mon csv en utf8 avec délimiteur (","). Mais si je fais :

//J'ouvre le fichier et je parse la 1ere ligne
        $handle = fopen($pathCsv, "r");
        if(($data = fgetcsv($handle, 0, ",")) !== FALSE) {

        }
        fclose($handle);

C'est pas bon, mais si je mets ";", là ça fonctionne bizard non?