Bonjour !
Alors je travail sur une application nodeJS actuellement et j'ai un système qui permet d'upload un fichier de type CSV et qui met à jour la base de donnée directement.
Mon problème est que j'aimerai ne pas upload tout le fichier CSV, et supprimer des lignes quand je clique sur envoyer la demande (voir images).
J'aimerais supprimer mes 5 premières lignes du document ainsi que ceux où le nom du fournisseur c'est NE PLUS UTILISER comme dans l'image ci-dessous.
Voici le code pour vous aidez à comprendre.
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 const csv = require('csvtojson'); const fs = require('fs'); const CSV_RETURN_CODES = { ERRORS: 'Le fichier a été importé avec succès mais avec des erreurs non bloquantes.', SUCCESS: 'Le fichier a été importé avec succès.', }; module.exports.CSV_RETURN_CODES = CSV_RETURN_CODES; module.exports.Csv = class Csv { constructor(filePath) { this.filePath = filePath; // this.filePath = './temp/fournisseurs.csv'; } async toJson(Model, callback) { const rows = []; await csv({ delimiter: [';'], ignoreEmpty: true, noheader: false, headers: ['id', 'raison_sociale', 'mail', 'tel', 'adresse', 'cp', 'localite'], }) .fromFile(this.filePath) .on('json', async (jsonObj) => { try { if (jsonObj.id !== '' && Number.isInteger(parseInt(jsonObj.id, 10)) && parseInt(jsonObj.id, 10) < 5000000) { rows.push(Model.upsert(jsonObj)); } } catch (e) { console.error(e); } }) .on('end', async (err) => { fs.unlinkSync(this.filePath); try { await Promise.all(rows); if (err) { console.error(err); return callback(CSV_RETURN_CODES.ERRORS); } console.log('Fournisseurs importés avec success'); return callback(CSV_RETURN_CODES.SUCCESS); } catch (e) { console.error(e); } }); } };HTML :
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 /* Import fournisseurs */ $('#fournisseurs-input').fileinput({ language: 'fr', showUpload: false, showCaption: false, showPreview: false, allowedFileExtensions: ['csv'] }); $('#importer-fournisseurs').click(function() { const fichier = $('#fournisseurs-input').prop('files')[0]; let form = $('#form-import-fournisseurs'); $(this).button('loading'); console.log(form); if(fichier) { let payload = new FormData(); payload.append('fichier', fichier); $.ajax({ url: form.attr('action'), type: form.attr('method'), data: payload, processData: false, contentType: false, success: function () { $('#importer-fournisseurs').button('reset'); displaySuccess('Fournisseurs ajoutés avec <strong>succes</success>'); }, error: function () { $('#importer-fournisseurs').button('reset'); displayError('lors de l\'ajout des utilisateurs !'); }, }); } else { $('#importer-fournisseurs').button('reset'); displayError('Veuillez insérer un fichier à importer'); } }); $('#fournisseurs-input').on('fileloaded', function (event, file) { const label_selector = '#label-fournisseurs-input'; $(label_selector).text(file.name.substring(0, 25) + '...'); $(label_selector).attr('title', file.name); }); $('#fournisseurs-input').on('fileclear', function () { $('#label-fournisseurs-input').text(''); }); $('#fournisseurs-input').on('fileerror', function () { $(this).fileinput('clear'); $('#label-fournisseurs-input').text('Extension invalide. Utilisez des .csv'); displayError('Extension invalide. Utilisez des .csv'); });
Code html : 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 <div class="row"> <div class="col-md-6"> <form id="form-import-fournisseurs" action="/fournisseurs/import" method="POST"> <h1>Importer les fournisseurs</h1> <p>Le fichier doit être dans le fomat CSV (séparateur 'point-virgule').</p> <div class="form-group col-md-5"> <label for="fournisseurs-input">Fichier: <span id="label-fournisseurs-input"></span> </label> <input id="fournisseurs-input" type="file" accept=".csv" class="fileinput"> </div> <div class="hidden divider"></div> <button id="importer-fournisseurs" type="button" class="btn btn-success" data-loading-text="<i class='glyphicon glyphicon-refresh spinner'></i> Importation en cours"> <span class="glyphicon glyphicon-ok"></span> {{i18n "bon_commande.btn_envoyer"}} </button> <div id="messages-zone"></div> </div> </div>
Merci par avance pour votre aide !
Partager