Comment télécharger un fichier avec l'ajax en petits morceaux et vérifier échoue, re-télécharger les parties qui ont échoué.

J'ai un fichier téléchargé par un utilisateur, et j'aimerais atteindre les objectifs suivants.

  1. Diviser le fichier en plusieurs morceaux sur un mégaoctet.
  2. Télécharger chaque morceau, et attendre qu'il ait fini avant de commencer à télécharger le segment suivant.
  3. Pour chaque morceau d'obtenir le succès ou l'échec de rapport.
  4. Re-télécharger l'échec de morceaux.
  5. Obtenir des progrès dans les pourcentages.

Voici un aperçu de JavaScript. Je suis littéralement perdu. A obtenu un peu de code en ligne et a essayé de le modifier.

$.chunky = function(file, name){        
                var loaded = 0;
                var step = 1048576//1024*1024;
                var total = file.size;
                var start = 0;
                var reader = new FileReader();

                reader.onload = function(e){

                var d = {file:reader.result}
                $.ajax({
                    url:"../record/c/index.php",
                    type:"POST", 
                    data:d}).done(function(r){
                    $('.record_reply_g').html(r);

                    loaded += step;                 
                    $('.upload_rpogress').html((loaded/total) * 100);

                        if(loaded <= total){
                            blob = file.slice(loaded,loaded+step);
                            reader.readAsBinaryString(blob);
                        } else {
                            loaded = total;
                        }
                })              
                };

                var blob = file.slice(start,step);
                reader.readAsBinaryString(blob);
            }

Comment puis-je obtenir ci-dessus. Veuillez expliquer ce qui se passe si il y a une solution viable.

avez-vous essayé github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads
pas un mauvais départ, vous devez couper avec une accumulation de gamme, chargé sera le gros morceau de la taille, et l'étape semble être constant... en général, essayez de diviser le problème en petits morceaux, comme quelque chose qui peut télécharger une plage de données à partir d'un fichier, puis d'une partie que l'on peut appeler la distance uploader sur chaque partie d'un fichier, d'une part pour gérer les erreurs, puis une partie d'annoncer "je suis fait", ... bref, de plus en plus de petites fonctions, moins d'un gros onload de la fonction.
J'ai une autre fonction qui peut faire de gros morceaux seulement, le problème est en attente pour chaque morceau à télécharger. son un tableau qui contient des morceaux d'environ 1 mo chacune.

OriginalL'auteur Relm | 2015-11-05