Cześć, stworzyłem formularz, który faktycznie przesyła utwory do folderu serwera, ale próbowałem znaleźć sposób na umieszczenie limitu w folderze monitując użytkownicy, których dotarli do limitu przed złożeniem formularza.

Po stronie serwera

var storage = multer.diskStorage({
destination: function(req, file, callback) {
    callback(null, './uploads');
    },
filename: function(req, file, callback) {
    callback(null, file.originalname);
    }
});

var limits = {
    files: 100, 
    fileSize: 50000000
};

var upload = multer({
    storage: storage,
    fileFilter: function(req, file, callback) {
        var ext = path.extname(file.originalname);
        if (ext !== '.mp3' && ext !== '.wav' && ext !== '.m4a' && ext !== '.flac' && ext !== '.aac') {
            return callback(new Error('You are only allowed to upload audio files.'))
        }
        callback(null, true)
    },limits:limits
}).any('SongFile');

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

app.post('/api/photo', function(req, res) {
    upload(req, res, function(err) {
        if (err instanceof multer.MulterError) {
            return res.end("Some error occured.");
        }else if (err) {
            return res.end("You are only allowed to upload audio files.");
        }
        res.end("Songs are uploaded");
    });
});

index.html (formularz)

<form id="uploadForm" method="post" action="/api/photo" encType="multipart/form-data">
<input type="file" multiple='multiple' name="SongFile" ><br>
<input type="submit" value="Submit">
<span id = "status"></span>
</form>
0
anjelott1 13 kwiecień 2021, 13:04

1 odpowiedź

Najlepsza odpowiedź

Po dokonaniu aplikacji app.post do asynchronicznego i przy użyciu modułu rozmiaru Get-folder działa teraz jak urok.

app.post('/api/photo',async (req, res)=> {
    try 
    {
        getSize('./uploads/', (err, size) => {
            if (err) { throw err;}
            else if(size>100000000){
                return res.end("Daily upload limit reached!!Cannot upload for now")
                }
            upload(req, res, function(err) {
                if (err instanceof multer.MulterError) {
                    return res.end("Some error occured.");
                }else if (err) {
                    return res.end("You are only allowed to upload audio files.");
                }
                res.end("Songs are uploaded");
            });
/*          console.log('Uploads folder is ' + size / 1024 / 1024).toFixed(2) + ' MB');
 */         });
    }catch (error){

    }
}); 
0
dll_onFire 13 kwiecień 2021, 14:05