Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Node.js][Express][socket.io] Envoi de fichier

Sujet résolu
    14 mai 2019 à 15:51:12

    Bonjour tous le monde,

    Je viens vers vous pour un petit soucis dont je ne trouve pas la solution...

    Je tente de faire un chat dans lequel le client pourrait envoyer un fichier...

    J'utilise Express pour structurer ma page et socket.io pour gérer le chat.

    Pour récupérer le fichier envoyer, j'utilise "express-fileupload".

    Seulement, mon req.files vaut undefined peut importe ce que je fais... :/

    Voici le code si ça peut aider ^^'

    let express = require('express');
    let fileUpload = require('express-fileupload');
    let app = express();
    let server = require('http').createServer(app);
    let io = require('socket.io')(server);
    let session = require('express-session')({
        secret: "monmotdepasseleplussecretdumonde:P",
        resave: true,
        saveUninitialized: true
    });
    let sharedSession = require('express-socket.io-session');
    let ent = require('ent');
    
    app.use(session)
        .use(fileUpload({
            limits: {fileSize: 100 * 1024 * 1024},
            useTempFiles: true,
            tempFileDir: '/tmp/',
        }))
        .use(express.static('public'))
        .get('/', function (req, res) {
            res.render('index.ejs');
        })
        .post('/upload', function (req, res) {
            console.log(req);
            if (Object.keys(req.files).length == 0) {
                return res.status(400).send('No files were uploaded.');
            }
    
            // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
            let sampleFile = req.files.sampleFile;
    
            // Use the mv() method to place the file somewhere on your server
            sampleFile.mv('/somewhere/on/your/server/filename.jpg', function(err) {
                if (err)
                    return res.status(500).send(err);
    
                res.send('File uploaded!');
            });
        })
    
    io.use(sharedSession(session, {
        autoSave: true
    }));
    
    io.on('connection', function (socket) {
        socket.on('login', function (pseudo) {
            pseudo = ent.encode(pseudo);
            socket.handshake.session.pseudo = pseudo;
            socket.handshake.session.save();
            console.log("Un client est connecté");
            socket.emit('connection', 'Vous êtes bien connecté en tant que ' + pseudo);
            socket.broadcast.emit('connection', pseudo + ' vient de se connecter !');
        })
    
        socket.on('message', function (message) {
            message = ent.encode(message);
            socket.broadcast.emit('message', {message: message, pseudo: socket.handshake.session.pseudo});
        })
    });
    
    server.listen(8080);

    Je vous remercie par avance du temps que vous m'accordez.

    Cordialement,

    Xypocat

    • Partager sur Facebook
    • Partager sur Twitter

    Tout est possible, pour qui sait apprendre!

      16 mai 2019 à 4:05:02

      Bonjour.

      Ce serait bien que tu nous montre le code HTML du formulaire.

      Par exemple, est-ce que tu as bien défini dans la balise form pour l'upload de fichier ?

      • Partager sur Facebook
      • Partager sur Twitter

      Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

        16 mai 2019 à 12:27:18

        Bonjour Lartak,

        J'ai contourner le problème en préférant un envoie de fichier via socket.io directement plutôt que de m'embêter à récupérer par une route en post ^^'

        Mais merci quand même :)

        • Partager sur Facebook
        • Partager sur Twitter

        Tout est possible, pour qui sait apprendre!

          16 mai 2019 à 13:11:50

          Si ton problème est résolu, ce serait bien que tu marques ton sujet comme tel.
          • Partager sur Facebook
          • Partager sur Twitter

          Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

          [Node.js][Express][socket.io] Envoi de fichier

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown