Javascript 在php中缝合媒体文件

Javascript 在php中缝合媒体文件,javascript,php,Javascript,Php,我一直致力于将许多视频文件拼接成一个视频文件。我发现了一个简单的chunker,它工作得非常好。然而,我在后端遇到了麻烦,试图将文件重新缝合为一个文件 $("#submit-btn").click(function(e){ e.preventDefault(); var files = document.getElementById('files').files; upload(files[0]); }) function upload(file)

我一直致力于将许多视频文件拼接成一个视频文件。我发现了一个简单的chunker,它工作得非常好。然而,我在后端遇到了麻烦,试图将文件重新缝合为一个文件

$("#submit-btn").click(function(e){
    e.preventDefault();
    var files = document.getElementById('files').files;
    upload(files[0]);

})
function upload(file) {
    var chunkSize = 50000000,
    size = file.size,
    numberofChunks = Math.ceil(file.size/chunkSize),
    start = 0, end =  start + chunkSize, num = 1;

    var chunkUpload = function(blob) {
        var fd = new FormData();
        var xhr = new XMLHttpRequest();

        fd.append('upload', blob, file.name);
        fd.append('num', num);
        fd.append('num_chunks', numberofChunks);
        xhr.open('POST', '{{LINK aj/chunk-upload}}?hash=' + $('.main_session').val(), true);
        xhr.send(fd);
    }

    while (start < size) {
        chunkUpload(file.slice(start, end));
        start = end;
        end = Math.min(start + chunkSize , file.size );
        num++;
    }
}

$(“#提交btn”)。单击(功能(e){
e、 预防默认值();
var files=document.getElementById('files').files;
上传(文件[0]);
})
功能上传(文件){
变量chunkSize=50000000,
size=file.size,
numberofChunks=Math.ceil(file.size/chunkSize),
start=0,end=start+chunkSize,num=1;
var chunkUpload=函数(blob){
var fd=新FormData();
var xhr=new XMLHttpRequest();
fd.append('upload',blob,file.name);
fd.append('num',num);
fd.append('num_chunks',numberofChunks);
xhr.open('POST','{{LINK aj/chunk upload}}}?hash='+$('.main_session').val(),true);
xhr.send(fd);
}
while(开始<大小){
chunkUpload(file.slice(开始,结束));
开始=结束;
end=Math.min(start+chunkSize,file.size);
num++;
}
}
也许这会有帮助--
<?php
//chunk-upload.php

$target_path = 'uploads/';

$tmp_name = $_FILES['upload']['tmp_name'];
$filename = $_FILES['upload']['name'];
$target_file = $target_path.$filename;
$num = $_POST['num'];
$num_chunks = $_POST['num_chunks'];

move_uploaded_file($tmp_name, $target_file.$num);

if ($num == $num_chunks) {
    $fp = fopen("uploads/{$filename}", 'w');
    fclose($fp);
    /* here you can reassemble chunks together */
    for ($i = 1; $i <= $num_chunks; $i++) {
        $fh = fopen( $target_file.$i, 'rb' );
        $buffer = fread( $fh, filesize($target_file.$i));
        fclose( $fh );

        $total = fopen( "uploads/{$filename}", 'ab' );
        $write = fwrite( $total, $buffer );
        fclose($total);
    }
}