maxFileSize e acceptFileTypes nel plug-in di caricamento file blueimp non funzionano. Perché?


85

Sto usando il plug-in di caricamento file jQuery Blueimp per caricare i file.

Non ho avuto problemi a caricare ma l'opzione maxFileSizee acceptFileTypesnon funzionano.

Questo è il mio codice:

$(document).ready(function () {
    'use strict';

    $('#fileupload').fileupload({
        dataType: 'json',
        autoUpload: false,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 5000000,
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
                    .appendTo('#div_files');
            });
        },
        fail: function (e, data) {
            $.each(data.messages, function (index, error) {
                $('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
                    .appendTo('#div_files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);

            $('#progress .bar').css('width', progress + '%');
        }
    });
});

Salve, sto cercando di implementare questo codice per il caricamento del file ma ricevo l'errore che dice Errore di caricamento del file: i byte caricati superano la dimensione del file. Puoi suggerirmi qual è la causa?
Jay Maharjan

2
@JayMaharjan Sei sicuro che maxFileSize sia configurato correttamente?
YoBre

1
Dopo aver eseguito la corretta configurazione in php.ini ora sono in grado di caricare file di grandi dimensioni. Grazie per l'aiuto. :)
Jay Maharjan

Nel mio caso, la gif è stata ridimensionata e convertita in png, quindi il filtro per gif non è riuscito ovviamente. E stranamente, ha iniziato a funzionare da solo non appena ho capito cosa stava succedendo, ho ricontrollato se avessi fatto qualcosa con la libreria ma niente, tutto ciò che avevo messo erano i log della console, che ho rimosso e ancora funzionante. Pubblicare in modo che questo possa aiutare qualcuno.
Zia Ul Rehman Mughal,

Risposte:


135

Ha avuto lo stesso problema, e il ragazzo blueimp dice " maxFileSize e acceptFileTypes sono supportati solo dalla versione dell'interfaccia utente " e ha fornito un collegamento (interrotto) per incorporare i metodi _validate e _hasError.

Quindi, senza sapere come incorporare quei metodi senza rovinare lo script, ho scritto questa piccola funzione. Sembra funzionare per me.

Basta aggiungere questo

add: function(e, data) {
        var uploadErrors = [];
        var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
        if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('Not an accepted file type');
        }
        if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
            uploadErrors.push('Filesize is too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.submit();
        }
},

all'inizio delle opzioni .fileupload come mostrato nel codice qui

$(document).ready(function () {
    'use strict';

    $('#fileupload').fileupload({
        add: function(e, data) {
                var uploadErrors = [];
                var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
                if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
                    uploadErrors.push('Not an accepted file type');
                }
                if(data.originalFiles[0]['size'].length && data.originalFiles[0]['size'] > 5000000) {
                    uploadErrors.push('Filesize is too big');
                }
                if(uploadErrors.length > 0) {
                    alert(uploadErrors.join("\n"));
                } else {
                    data.submit();
                }
        },
        dataType: 'json',
        autoUpload: false,
        // acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        // maxFileSize: 5000000,
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p style="color: green;">' + file.name + '<i class="elusive-ok" style="padding-left:10px;"/> - Type: ' + file.type + ' - Size: ' + file.size + ' byte</p>')
                .appendTo('#div_files');
            });
        },
        fail: function (e, data) {
            $.each(data.messages, function (index, error) {
                $('<p style="color: red;">Upload file error: ' + error + '<i class="elusive-remove" style="padding-left:10px;"/></p>')
                .appendTo('#div_files');
            });
        },
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);

            $('#progress .bar').css('width', progress + '%');
        }
    });
});

Noterai che ho aggiunto anche una funzione di dimensione del file perché funzionerà solo nella versione dell'interfaccia utente.

Aggiornato per ottenere il problema precedente suggerito da @lopsided: aggiunto data.originalFiles[0]['type'].lengthe data.originalFiles[0]['size'].lengthnelle query per assicurarsi che esistano e non siano vuoti prima di verificare la presenza di errori. Se non esistono, non verrà mostrato alcun errore e si baserà solo sul test degli errori lato server.


Questo è davvero utile. Tuttavia va notato che data.originalFiles[0]['type']è vuoto quando si carica da un browser che non supporta l'API dei file. Questo è stato il caso del mio telefono Android. Quello che ho fatto è stato passarlo se questo valore non è disponibile e quindi eseguire il fallback alla convalida del tipo MIME lato server. Altrimenti non supererai mai la acceptFileTypes.testlinea
sbilenco

@lopsided che è strano, ottengo il valore per data.originalFiles [0] ['type'] e ['size'] sul mio telefono Android e supera entrambi i test. In realtà ho problemi con il mio telefono in cui tutto sembra funzionare senza errori ma il file non viene caricato. Nessun problema da nessun'altra parte, solo Android.
PaulMrG

8
Penso che la condizione 'data.originalFiles [0] [' size ']. Length' sia deprecata, quindi restituisce sempre false.
kkocabiyik

5
Usa data.files [0] ['size'] e data.files [0] ['type']
Jose

2
Usi senza 'length' (data.originalFiles [0] ['size'] && data.originalFiles [0] ['size']> 500000)? 'true': 'false' funziona bene, ma voglio sapere se mi manca uno scenario 1. data.originalFiles [0] ['size']? 'true': 'false' (1) restituisce false per i valori 0, null, undefined
Ganesh Arulanantham

49

Dovresti includere jquery.fileupload-process.js e jquery.fileupload-validate.js per farlo funzionare.


4
Questa sembra essere la risposta migliore. ;)
thasmo

8
L'ordine di caricamento degli script è importante per far apparire il messaggio di errore: tmpl.min.js> jquery.ui.widget.js> jquery.iframe-transport.js> jquery.fileupload.js> jquery.fileupload-ui.js> jquery.fileupload-process.js> jquery.fileupload-validate.js
a11r

3
Il problema è lo stesso, puoi fornire qualche esempio funzionante per favore?
Vlatko

3
Sto avendo lo stesso problema. I miei file JS sono nell'ordine esatto descritto, ma sono ancora in grado di caricare file che non sono entrambi accettati secondo la regex, ma anche massicciamente oltre il limite di dimensione del file. Sto usando l'ultima versione di FileUpload, 9.10.5 con jQuery 1.11.1
Mr Pablo

3
Non funziona neanche per me, anche con tutti gli script inclusi nell'ordine corretto.
BadHorsie

10

Come suggerito in una risposta precedente, dobbiamo includere due file aggiuntivi jquery.fileupload-process.jse quindi, jquery.fileupload-validate.jspoiché devo eseguire alcune chiamate ajax aggiuntive durante l'aggiunta di un file, mi sto iscrivendo fileuploadaddall'evento per eseguire quelle chiamate. Riguardo a tale utilizzo, l'autore di questo plugin ha suggerito quanto segue

Dai un'occhiata qui: https://github.com/blueimp/jQuery-File-Upload/wiki/Options#wiki-callback-options

L'aggiunta di listener di eventi aggiuntivi tramite il metodo bind (o sul metodo con jQuery 1.7+) è l'opzione preferita per conservare le impostazioni di callback dalla versione dell'interfaccia utente di caricamento file jQuery.

In alternativa, puoi anche semplicemente avviare l'elaborazione nel tuo callback, in questo modo: https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-process.js#L50

Utilizzando la combinazione delle due opzioni suggerite, il seguente codice funziona perfettamente per me

$fileInput.fileupload({
    url: 'upload_url',
    type: 'POST',
    dataType: 'json',
    autoUpload: false,
    disableValidation: false,
    maxFileSize: 1024 * 1024,
    messages: {
        maxFileSize: 'File exceeds maximum allowed size of 1MB',
    }
});

$fileInput.on('fileuploadadd', function(evt, data) {
    var $this = $(this);
    var validation = data.process(function () {
        return $this.fileupload('process', data);
    });

    validation.done(function() {
        makeAjaxCall('some_other_url', { fileName: data.files[0].name, fileSizeInBytes: data.files[0].size })
            .done(function(resp) {
                data.formData = data.formData || {};
                data.formData.someData = resp.SomeData;
                data.submit();
        });
    });
    validation.fail(function(data) {
        console.log('Upload error: ' + data.files[0].error);
    });
});

1
Amith, ho provato questo e ho ricevuto il seguente errore:Uncaught Error: cannot call methods on fileupload prior to initialization; attempted to call method 'process'
TheVillageIdiot

1
Significa quasi sempre che .fileupload()non è stato chiamato al momento giusto. Senza vedere il codice, è quasi impossibile da diagnosticare. Suggerisco di aprire una nuova domanda e di pubblicare il codice pertinente, magari come jsfiddle.
Amith George

@TheVillageIdiot Stai cercando di stabilire la logica per 'fileuploadadd' all'interno della dichiarazione $ fileInput.fileupload? Ho avuto un errore simile quando ho provato a ripiegare l'esempio di Amith in qualcosa del genere: $('#fileupload').fileupload({ blah : blah, blah : blah, }) $fileInput.on('fileuploadadd', function(evt, data) { var $this = $(this); var validation = data.process(function () { return $this.fileupload('process', data); }); ... era ovvio quando ci pensavo, ma stavo cercando di definire la logica all'interno di qualcosa che non avevo ancora finito di dichiarare.
jdhurst

ricevo questo errore: Errore di riferimento non rilevato: makeAjaxCall
rida mukhtar

8

Questo funziona per me in Firefox

$('#fileupload').fileupload({

    dataType: 'json',
    //acceptFileTypes: /(\.|\/)(xml|pdf)$/i,
    //maxFileSize: 15000000,

    add: function (e, data) {
        var uploadErrors = [];

        var acceptFileTypes = /\/(pdf|xml)$/i;
        if(data.originalFiles[0]['type'].length && !acceptFileTypes.test(data.originalFiles[0]['type'])) {
            uploadErrors.push('File type not accepted');
        }

        console.log(data.originalFiles[0]['size']) ;
        if (data.originalFiles[0]['size'] > 5000000) {
            uploadErrors.push('Filesize too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.context = $('<p/>').text('Uploading...').appendTo(document.body);
            data.submit();
        }

    },
    done: function (e, data) {
        data.context.text('Success!.');
    }
});

3
Benvenuto in Stack Overflow! Per favore, potresti riscrivere questa risposta in modo che sia in inglese? So che i traduttori automatici a volte possono rendere difficile dirlo, ma l'inglese è l'unico linguaggio (non di programmazione) che usiamo qui.
Pop l'

15
attenzione, non devi essere un linguista astuto per essere in grado di capire che nasatome sta dicendo "Questo funziona per me: è corretto in Firefox". L'errore di caricamento è "dimensione del file troppo grande". Sono australiano e sono cresciuto parlando inglese, ma penso che ci sia un certo atteggiamento nel parlare inglese. "L'inglese è l'unica lingua che usiamo qui" non è vero. Le persone qui usano molte lingue diverse. Tuttavia, è politica di questo sito avere domande e risposte in inglese.
Tim Ogilvy

3

apri il file denominato "jquery.fileupload-ui.js", vedrai il codice in questo modo:

 $.widget('blueimp.fileupload', $.blueimp.fileupload, {

    options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-download',
        。。。。

aggiungi semplicemente un codice di riga --- il nuovo attributo "acceptFileTypes", in questo modo:

 options: {
        // By default, files added to the widget are uploaded as soon
        // as the user clicks on the start buttons. To enable automatic
        // uploads, set the following option to true:
        **acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,**
        autoUpload: false,
        // The ID of the upload template:
        uploadTemplateId: 'template-upload',
        // The ID of the download template:
        downloadTemplateId: 'template-d

ora vedrai che va tutto bene! ~ prendi l'attributo con un posto sbagliato.


È una cattiva idea modificare il codice di base di un plugin / libreria se puoi evitarlo.
BadHorsie

3

Se hai tutti i plugin JS importati e nell'ordine corretto, ma continui ad avere problemi, sembra che specificando il tuo gestore "add" si annulli quello dal plugin * -validate.js, che normalmente si attiva off tutta la convalida chiamando data.process (). Quindi, per risolverlo, fai qualcosa di simile nel tuo gestore di eventi "aggiungi":

$('#whatever').fileupload({
...
add: function(e, data) {
   var $this = $(this);
   data.process(function() {
      return $this.fileupload('process', data);
   }).done(function(){
      //do success stuff
      data.submit(); <-- fire off the upload to the server
   }).fail(function() {
      alert(data.files[0].error);
   });
}
...
});

Risolto il mio problema
fezfox

2

Esempio verificato / valido per:

  • più input di file
  • per uno o più file di caricamento: $.grep()per rimuovere i file dall'array con errori
  • imagee audioformato
  • tipi di file dinamici dalla stringa di new RegExp()

Avviso: acceptFileTypes.test()- controlla i tipi MIME, per il file adio come .mp3sarà audio/mpeg- non solo l'estensione. Per tutte le opzioni blueimp: https://github.com/blueimp/jQuery-File-Upload/wiki/Options

$('input[type="file"]').each(function(i){

    // .form_files is my div/section of form for input file and progressbar
    var $progressbar = $(this).parents('.form_files:first').find('.progress-bar:first');

    var $image_format = 'jpg|jpeg|jpe|png|gif';
    var $audio_format = 'mp3|mpeg';
    var $all_formats = $image_format + '|' + $audio_format;

    var $image_size = 2;
    var $audio_size = 10;
    var mb = 1048576;

    $(this).fileupload({
        // ...
        singleFileUploads: false,   // << send all together, not single
        // ...
        add: function (e, data) {

            // array with all indexes of files with errors
            var error_uploads_indexes = [];

            // when add file - each file
            $.each(data.files, function(index, file) {

                // array for all errors
                var uploadErrors = [];


                // validate all formats first
                if($all_formats){

                    // check all formats first - before size
                    var acceptFileTypes = "(\.|\/)(" + $all_formats + ")$";
                    acceptFileTypes = new RegExp(acceptFileTypes, "i");

                    // when wrong format
                    if(data.files[index]['type'].length && !acceptFileTypes.test(data.files[index]['type'])) {
                        uploadErrors.push('Not an accepted file type');

                    }else{

                        // default size is image_size
                        var $my_size = $image_size;

                            // check audio format
                            var acceptFileTypes = "(\.|\/)(" + $audio_format + ")$";
                            acceptFileTypes = new RegExp(acceptFileTypes, "i");

                            // alert(data.files[index]['type']);
                            // alert(acceptFileTypes.test('audio/mpeg'));

                            // if is audio then size is audio_size
                            if(data.files[index]['type'].length && acceptFileTypes.test(data.files[index]['type'])) {
                                $my_size = $audio_size;
                            }

                        // check size
                        if(data.files[index]['size'] > $my_size * mb) {
                            uploadErrors.push('Filesize is too big');
                        };
                    };

                }; // << all_formats

                // when errors
                if(uploadErrors.length > 0) {
                    //  alert(uploadErrors.join("\n"));

                    // mark index of error file
                    error_uploads_indexes.push(index);
                    // alert error
                    alert(uploadErrors.join("\n"));

                };

            }); // << each


            // remove indexes (files) with error
            data.files = $.grep( data.files, function( n, i ) {
                return $.inArray(i, error_uploads_indexes) ==-1;
            });


            // if are files to upload
            if(data.files.length){
                // upload by ajax
                var jqXHR = data.submit().done(function (result, textStatus, jqXHR) {
                        //...
                     alert('done!') ;
                        // ...
                });
            } // 

        }, // << add
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $progressbar.css(
                'width',
                progress + '%'
                );
        }
    }); // << file_upload

    //          
}); // << each input file

1

Solo un esempio di gestore di eventi per Aggiungi evento. Presuppone che l'opzione singleFileUploads sia abilitata (che è l'impostazione predefinita). Ulteriori informazioni sulla documentazione di caricamento file jQuery su come eseguire il binding con l'evento add / fileuploadadd. All'interno di loop puoi usare sia vars this che file . Un esempio di come ottenere la proprietà size: this ['size'] o file.size .

    /**
     * Handles Add event
     */
    base.eventAdd = function(e, data) {

        var errs = [];
        var acceptFileTypes = /(\.|\/)(gif|jpe?g|png)$/i;
        var maxFileSize = 5000000;

        // Validate file
        $.each(data.files, function(index, file) {
            if (file.type.length && !acceptFileTypes.test(file.type)) {
                errs.push('Selected file "' + file.name + '" is not alloawed. Invalid file type.');
            }
            if (this['size'] > maxFileSize) {
                errs.push('Selected file "' + file.name + '" is too big, ' + parseInt(file.size / 1024 / 1024) + 'M.. File should be smaller than ' + parseInt(maxFileSize / 1024 / 1024) + 'M.');
            }
        });

        // Output errors or submit data
        if (errs.length > 0) {
            alert('An error occured. ' + errs.join(" "));
        } else {
            data.submit();
        }
    };

1

Questo ha funzionato per me in Chrome, la versione jquery.fileupload.js è 5.42.3

     add: function(e, data) {
        var uploadErrors = [];
        var ext = data.originalFiles[0].name.split('.').pop().toLowerCase();
        if($.inArray(ext, ['odt','docx']) == -1) {
            uploadErrors.push('Not an accepted file type');
        }
        if(data.originalFiles[0].size > (2*1024*1024)) {//2 MB
            uploadErrors.push('Filesize is too big');
        }
        if(uploadErrors.length > 0) {
            alert(uploadErrors.join("\n"));
        } else {
            data.submit();
        }
    },

1
Grazie. Funziona anche su 9.21.
geca

1
.fileupload({
    add: function (e, data) { 
        var attachmentValue = 3 * 1000 * 1024;
        var totalNoOfFiles = data.originalFiles.length;
        for (i = 0; i < data.originalFiles.length; i++) {
            if (data.originalFiles[i]['size'] > attachmentValue) {
                $attachmentsList.find('.uploading').remove();
                $attachmentMessage.append("<li>" + 'Uploaded bytes exceeded the file size' + "</li>");
                $attachmentMessage.show().fadeOut(10000, function () {
                    $attachmentMessage.html('');
                });
                data.originalFiles.splice(i, 1);
            }
        }
        if (data.files[0]) {
            $attachmentsList
           .prepend('<li class="uploading" class="clearfix loading-content">' + data.files[0].name + '</li>');
        }
        data.submit();                    
    }

1

Nel caso in cui chiunque cerchi formati comunemente supportati dal server

3g2|3gp|3gp2|3gpp|aac|aaf|aca|accdb|accde|accdt|acx|adt|adts|afm|ai|aif|aifc|aiff|appcache|application|art|asd|asf|asi|asm|asr|asx|atom|au|avi|axs|bas|bcpio|bin|bmp|c|cab|calx|cat|cdf|chm|class|clp|cmx|cnf|cod|cpio|cpp|crd|crl|crt|csh|css|csv|cur|dcr|deploy|der|dib|dir|disco|dll|dllconfig|dlm|doc|docm|docx|dot|dotm|dotx|dsp|dtd|dvi|dvr-ms|dwf|dwp|dxr|eml|emz|eot|eps|esd|etx|evy|exe|execonfig|fdf|fif|fla|flr|flv|gif|gtar|gz|h|hdf|hdml|hhc|hhk|hhp|hlp|hqx|hta|htc|htm|html|htt|hxt|ico|ics|ief|iii|inf|ins|isp|IVF|jar|java|jck|jcz|jfif|jpb|jpe|jpeg|jpg|js|json|jsonld|jsx|latex|less|lit|lpk|lsf|lsx|lzh|m13|m14|m1v|m2ts|m3u|m4a|m4v|man|manifest|map|mdb|mdp|me|mht|mhtml|mid|midi|mix|mmf|mno|mny|mov|movie|mp2|mp3|mp4|mp4v|mpa|mpe|mpeg|mpg|mpp|mpv2|ms|msi|mso|mvb|mvc|nc|nsc|nws|ocx|oda|odc|ods|oga|ogg|ogv|one|onea|onepkg|onetmp|onetoc|onetoc2|osdx|otf|p10|p12|p7b|p7c|p7m|p7r|p7s|pbm|pcx|pcz|pdf|pfb|pfm|pfx|pgm|pko|pma|pmc|pml|pmr|pmw|png|pnm|pnz|pot|potm|potx|ppam|ppm|pps|ppsm|ppsx|ppt|pptm|pptx|prf|prm|prx|ps|psd|psm|psp|pub|qt|qtl|qxd|ra|ram|rar|ras|rf|rgb|rm|rmi|roff|rpm|rtf|rtx|scd|sct|sea|setpay|setreg|sgml|sh|shar|sit|sldm|sldx|smd|smi|smx|smz|snd|snp|spc|spl|spx|src|ssm|sst|stl|sv4cpio|sv4crc|svg|svgz|swf|t|tar|tcl|tex|texi|texinfo|tgz|thmx|thn|tif|tiff|toc|tr|trm|ts|tsv|ttf|tts|txt|u32|uls|ustar|vbs|vcf|vcs|vdx|vml|vsd|vss|vst|vsto|vsw|vsx|vtx|wav|wax|wbmp|wcm|wdb|webm|wks|wm|wma|wmd|wmf|wml|wmlc|wmls|wmlsc|wmp|wmv|wmx|wmz|woff|woff2|wps|wri|wrl|wrz|wsdl|wtv|wvx|x|xaf|xaml|xap|xbap|xbm|xdr|xht|xhtml|xla|xlam|xlc|xlm|xls|xlsb|xlsm|xlsx|xlt|xltm|xltx|xlw|xml|xof|xpm|xps|xsd|xsf|xsl|xslt|xsn|xtp|xwd|z|zip

0

Puoi anche usare una funzione extra come:

    function checkFileType(filename, typeRegEx) {
        if (filename.length < 4 || typeRegEx.length < 1) return false;
        var filenameParts = filename.split('.');
        if (filenameParts.length < 2) return false;
        var fileExtension = filenameParts[filenameParts.length - 1];
        return typeRegEx.test('.' + fileExtension);
    }

0

Dovresti includere jquery.fileupload-process.js e jquery.fileupload-validate.js per farlo funzionare.

Poi...

$(this).fileupload({
    // ...
    processfail: function (e, data) {
        data.files.forEach(function(file){
            if (file.error) {
                self.$errorMessage.html(file.error);
                return false;
            }
        });
    },
//...
}

il callback processfail viene avviato dopo un errore di convalida.


0
  • È inoltre possibile utilizzare l'estensione del file per verificare il tipo di file.
  • Un modo più semplice sarebbe fare qualcosa come indicato di seguito all'interno dell'aggiunta:

    add : function (e,data){
       var extension = data.originalFiles[0].name.substr( 
       (data.originalFiles[0].name.lastIndexOf('.') +1) );
                switch(extension){
                    case 'csv':
                    case 'xls':
                    case 'xlsx':
                        data.url = <Your URL>; 
                        data.submit();
                    break;
                    default:
                        alert("File type not accepted");
                    break;
                }
      }
    

0

se hai più file, usi un ciclo per verificare ogni formato di file, qualcosa del genere

add: function(e, data) {
        data.url = 'xx/';
        var uploadErrors = [];
         var acceptFileTypes = /^image\/(gif|jpe?g|png)$/i;
        console.log(data.originalFiles);
        for (var i = 0; i < data.originalFiles.length; i++) {
            if(data.originalFiles[i]['type'].length && !acceptFileTypes.test(data.originalFiles[i]['type'])) {
                    uploadErrors.push('Not an accepted file type');
                    data.originalFiles
                }
                if(data.originalFiles[i]['size'].length && data.originalFiles[i]['size'] > 5000000) {
                    uploadErrors.push('Filesize is too big');
                }
                if(uploadErrors.length > 0) {

                      alert(uploadErrors.join("\n"));
                }
        }
        data.submit();
      },
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.