Файл нарезки через Javascript для загрузки в API Dropbox поступает на сервер как неполный / поврежденный

#javascript #php #api #file #dropbox

#javascript #php #API #файл #dropbox

Вопрос:

Мне было интересно, может ли кто-нибудь взглянуть на этот javascript. Он берет файл, нарезает его с помощью цикла for и отправляет нарезанные биты на серверную часть, которая отправляется в API Dropbox. когда они попадают в dropbox, им не хватает нескольких мегабайт, и они не открываются так, как должны. Например, я отправил avi-файл, и видео составляет примерно четверть от предполагаемой длины. Если у кого-то нет идей, пожалуйста, дайте мне знать.

 
    for(let start = 0; start < file.size; start  = chunkSize){
        const slice = file.slice(start,start   chunkSize   1)
        const fd = new FormData()
        fd.append('data', slice)
        //count tells the server which api endpoint to hit (start sessions/append to session)
        fd.append('count', start)
        if(start != 0){
        fd.append('session_id',sessionID)
        fd.append('offset', uploadedSoFar)
        }
        uploadedSoFar  = slice.size;

        await fetch('/wp-content/plugins/Basic/chunks.php', {
            method: 'POST',
            body: fd
        })  .then(response => response.text() )
            .then((result) =>{
                
                if(start == 0){
                const json = JSON.parse(result); 
                sessionID = json['session_id']
                console.log(sessionID)
                }
                console.log(result)
                //finishChunk()
            });
    }
    const fd2 = new FormData();
    fd2.append('session_id', sessionID)
    const filepath = window.filePath;
    const filename = file.name;
    fd2.append('path', `${filepath}${filename}`)
    fd2.append('filesize', uploadedSoFar)
    fetch('/wp-content/plugins/Basic/finishchunk.php', {
            method: 'POST',
            body: fd2
        })  .then(response => response.text() )
            .then(result=>{
                console.log(result)
            });
 
    }