Я могу найти много документации о том, как использовать загрузку фрагментированных файлов с различными API и библиотеками, но я не могу найти, как использовать загрузку фрагментированных файлов Dropzone.js с простым PHP.
документация очень минимальная.Я не могу добавлять какие-либо библиотеки или API, кроме jQuery, на стороне клиента (JavaScript).
Мой вопрос заключается в том, как использовать новую функцию загрузки фрагментированных файлов Dropzone.js с PHP только на стороне сервера.(Код на стороне клиента приветствуется для установки).
Вот код, который я пытался до сих пор: Файл на стороне клиента .js:
var myDropzone = new Dropzone("div#formDiv",
{
url: "uploadform.php",
params: function (files, xhr, chunk)
{
if (chunk)
{
return
{
dzUuid=chunk.file.upload.uuid,
dzChunkIndex=chunk.index,
dzTotalFileSize=chunk.file.size,
dzCurrentChunkSize=chunk.dataBlock.data.size,
dzTotalChunkCount=chunk.file.upload.totalChunkCount,
dzChunkByteOffset=chunk.index * this.options.chunkSize,
dzChunkSize=this.options.chunkSize,
dzFilename=chunk.file.name;
};
}
},
method: "post",
timeout: 600000,
maxFileSize: 1024,
parallelUploads: 1,
chunking: true,
forceChunking: true,
chunkSize: 1000000,
parallelChunkUploads: true,
retryChunks: true,
retryChunksLimit: 3,
chunksUploaded: function (file, done)
{
// All chunks have uploaded successfully
},
error: function (msg)
{
alert(msg.responseText);
}
});
Вот PHP (сервер):
foreach ($_POST as $key => $value)
{
_log('key:' . $key . '; Value:' . $value);
}
Приведенный выше код ничего не показывает (_log () просто выводит его на экран и записывает в текстовый файл).
Я посмотрел заголовки отправки и получения, и это толькоотправляет один вызов на сервер.
Я проверил, что зона перетаскивания файлов правильно настроена Dropzone.js с помощью консоли инструментов разработчика в браузере.
Редактировать: Здесьдокументация для чанкованных загрузок: https://gitlab.com/meno/dropzone/wikis/faq#chunked-uploads
Чанкованные загрузки
Dropzone предлагает возможность загрузки файлов в чанках.Соответствующие параметры конфигурации для этой функции:
chunking, который должен быть установлен в true
forceChunking, если true, всегда будет отправлять файл в чанках, даже если это только один чанк
chunkSize в байтах
parallelChunkUploads, если true, чанки будут загружены одновременно
retryChunks, если true, библиотека попытается загрузить чанк в случае сбоя
retryChunksLimit по умолчанию равен 3
Тогда есть два важных обратных вызова.Первый: params, который может быть функцией, которая получает файлы, xhr и chunk в качестве первого аргумента.Если чанкинг включен, вы знаете, что файлы содержат только один этот файл, а чанк - это объект, содержащий всю информацию о текущем чанке.Пример:
var chunk = {
file: file,
index: 0,
status: Dropzone.UPLOADING,
progress: 0.4
}
См. Документацию для этого параметра для получения дополнительной информации или посмотрите исходный код для реализации по умолчанию.
Вторым важным обратным вызовом является chunksUploaded, который возвращает файл, который завершилзагрузка и функция done в качестве второго аргумента.Сделайте все, что вам нужно сделать в этой функции, чтобы сообщить серверу, что файл завершил загрузку, и вызовите функцию done (), когда будете готовы.