2015-10-01 20 views
6

Próbuję wziąć obiekt pojedynczego pliku i podzielić go na porcje według określonego rozmiaru porcji. W moim przykładzie, próbując podzielić pojedynczy plik na porcje 1 MB. Rozmyślam więc, ile sztuk zajęłoby, a następnie próbuję przekroić plik, zaczynając od "przesunięcia" (bieżący fragment, na którym się znajduję * wielkość kawałka), i odcinania rozmiaru kawałka. Mój pierwszy plasterek wyszedł poprawnie na 1MB, ale moje kolejne plasterki okazały się być 0, jakieś pomysły dlaczego? posiadanie działającego codepen tutaj:Dzielenie pliku na porcje z Javascriptem

http://codepen.io/ngalluzzo/pen/VvpYKz?editors=001[1]

var file = $('#uploadFile')[0].files[0]; 
    var chunkSize = 1024 * 1024; 
    var fileSize = file.size; 
    var chunks = Math.ceil(file.size/chunkSize,chunkSize); 
    var chunk = 0; 

    console.log('file size..',fileSize); 
    console.log('chunks...',chunks); 

    while (chunk <= chunks) { 
     var offset = chunk*chunkSize; 
     console.log('current chunk..', chunk); 
     console.log('offset...', chunk*chunkSize); 
     console.log('file blob from offset...', offset) 
     console.log(file.slice(offset,chunkSize)); 
     chunk++; 
    } 
+1

Twój codepen wydaje się działać dla mnie . Jedną różnicą między twoim codepenem a powyższym kodem jest to, że twój codepen poprawnie mówi: 'file.slice (offset, offset + chunkSize)' zamiast 'file.slice (offset, chunkSize)'. Na końcu tworzysz pustą kropelkę, ponieważ twój warunek powinien być 'while (chunk

+0

Tak, zaktualizowałem kodek za pomocą poniższego rozwiązania, działa świetnie. Dzięki za spojrzenie! –

Odpowiedz

4

Czy odcinając niewłaściwe końce:

console.log(file.slice(offset,chunkSize)); 

powinien być

console.log(file.slice(offset,offset+chunkSize));