У меня такой код:

function upload_by_chunks() {
    var chunk_size = 1048576; // 1MB
    function slice(start, end) {
        if (file.slice) {
            return file.slice(start, end);
        } else if (file.webkitSlice) {
            return file.webkitSlice(start, end);
        }
    }
    var i = 0;
    function process(start, end) {
        if (start < file.size) {
            var chunk = slice(start, end);
            chunk.name = file.name;
            var formData = new FormData();
            formData.append('file', chunk);
            formData.append('token', token);
            formData.append('path', leash.cwd);
            $.ajax({
                url: 'lib/upload.php?append=1',
                type: 'POST',
                success: function(response) {
                    if (response.error) {
                        alert(response.error);
                    }
                    process(end, end+chunk_size);
                },
                error: function(jxhr, error, status) {
                    alert(jxhr.statusText);
                },
                data: formData,
                cache: false,
                contentType: false,
                processData: false
            });
        } else {
            alert('File "' + file.name + '" uploaded.');
        }
    }
    process(0, chunk_size);
}

Я установил имя, используя chunk.name = file.name;, но в php имя файла - blob.

 $fname = basename($_FILES['file']['name']);

jcubic

Ответы (1)

Существует необязательный третий параметр метода append, который позволяет вам установить имя файла для большого двоичного объекта.

formData.append('file', chunk, file.name);

2022 WebDevInsider