web-dev-qa-db-fra.com

Importation de fichiers volumineux - La demande est annulée

J'essaie de télécharger des fichiers vidéo de taille 40 à 50 Mo. La barre de progression se bloque à un certain point et si j'observe dans l'onglet Réseaux de Google Chrome. La demande est annulée et il n'y a pas d'erreur et l'en-tête de réponse HTTP est vide.

Cependant, cela fonctionne pour les deux fichiers image/vidéo d'environ 10 à 15 Mo.

Mon code:

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone", {
        maxFiles: 1,
        parallelUploads: 100,
        acceptedFiles: '.3gp,.3gp2,.h261,.h263,.h264,.jpgv,.jpm,.jpgm,.mp4,.mp4v,.mpg4,.mpeg,.mpg,.mpe,.m1v,.m2v,.ogv,.qt,.mov,.fli,.flv,.mks,.mkv,.wmv,.avi,.movie,.smv,.g3,.jpeg,.jpg,.jpe,.png,.btif,.sgi,.svg,.tiff,.tif',
        previewTemplate: previewTemplate,
        previewsContainer: "#previews",
        autoProcessQueue: false,
        clickable: ".fileinput-button",
    });

P.S: Ce n'est pas un problème côté serveur car j'ai essayé de télécharger sans Dropzone et tout fonctionne bien.

20
Daniyal Arshad

Avez-vous utilisé la version dropzone.js> = 4.4.0 et la demande ajax?

Si c'est le cas, vous devez définir le timeout (en ms) dans votre configuration. C'est spécifier la valeur de délai d'attente pour la demande xhr (ajax), et la valeur par défaut seulement 30s.

Source: http://www.dropzonejs.com/#configuration

28
yahyaman

La première étape consiste à vérifier auprès du serveur car nginx ou d'autres outils de serveur chercheront dans l'en-tête la taille du fichier et rejetteront le fichier d'une certaine taille dépassant.

Si le serveur fonctionne correctement, mais en raison d'un problème de bande passante réseau. Le serveur donnera toujours une erreur qui doit être gérée par le côté client. Ici, le délai d'attente entre en action.

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-dropzone", {
        maxFiles: 1,
        timeout: 9000, /*milliseconds*/
        autoProcessQueue: false
});

myDropzone.on("sending", function(file, xhr, formData) {
  /*Called just before each file is sent*/
        xhr.ontimeout = (() => {
          /*Execute on case of timeout only*/
            console.log('Server Timeout')
        });
}
10
Jagatula

Il a un timeout, chaque fois qu'il est dépassé, la demande est annulée, il suffit de mettre

délai d'expiration: 180000,

en options

Ce serait:

Dropzone.autoDiscover = false;
var myDropzone = new Dropzone("#my-awesome-dropzone", {
        maxFiles: 1,
        timeout: 180000,
        parallelUploads: 100,
        acceptedFiles: '.3gp,.3gp2,.h261,.h263,.h264,.jpgv,.jpm,.jpgm,.mp4,.mp4v,.mpg4,.mpeg,.mpg,.mpe,.m1v,.m2v,.ogv,.qt,.mov,.fli,.flv,.mks,.mkv,.wmv,.avi,.movie,.smv,.g3,.jpeg,.jpg,.jpe,.png,.btif,.sgi,.svg,.tiff,.tif',
        previewTemplate: previewTemplate,
        previewsContainer: "#previews",
        autoProcessQueue: false,
        clickable: ".fileinput-button",
    });