Пользователи отправляют с сайта большие файлы Excel. Разрезал файл на куски, загрузил на сервер (PHP).
На стороне сервера объединил куски в один файл.xls, но при открытии появляется сообщение "контент, который не удалось было найдено в книге".
Я был бы признателен, если бы вы ответили на мои вопросы:
Вопрос 1: Разделяю ли я файл правильно .xls по частям и загружать на сервер?
Вопрос 2: Как собрать фрагменты в один файл .xls на стороне сервера (PHP)?
Пример моего кода
HTML
Send
JS
let chunkList = [];
let fileInput = document.getElementById('upload_file');
fileInput.addEventListener('change', function (event) {
let file = event.target.files[0];
let chunkSize = 1048576;
let currentChunk = 0;
let countChunks = Math.ceil(file.size / chunkSize)
let suffix = 'xls';
const hash = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
for(let i = 0; i < countChunks; i++){
const item = {
chunk: file.slice(currentChunk, currentChunk + chunkSize),
fileName: `${hash}_${i}.${suffix}`
}
currentChunk += chunkSize
chunkList.push(item)
}
})
let token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
let my_but = document.getElementById('but');
my_but.addEventListener('click', async function (event) {
let file = document.getElementById('upload_file').files[0];
if (file === undefined || chunkList.length < 1) return;
for (const item of chunkList) {
const formData = new FormData()
formData.append('chunk', item.chunk)
formData.append('filename', item.fileName)
let resp = await sendChunkFile(formData);
console.log(resp)
}
})
async function sendChunkFile(formData){
let response = await fetch('/api/chunks-file-upload', {
headers: {"X-CSRF-TOKEN": token},
method: 'POST',
credentials: "same-origin",
body: formData
});
return await response.json();
}
Сервер PHP (Laravel)
$pathChunks = 'chunks/';
$pathMerge = 'merge-file-chunks/';
$chunkNames = Storage::disk('local')->files($pathChunks);
foreach ($chunkNames as $chunkName) {
$result = Storage::disk('local')->append(
$pathMerge.'file.xls',
Storage::disk('local')->get($pathChunks.basename($chunkName))
);
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... build-in-p
Как разбить большой файл .xls/.xlsx на куски с помощью js, а затем собрать его в PHP (Laravel)? [закрыто] ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как разбить код на более мелкие и управляемые куски модулей? [закрыто]
Anonymous » » в форуме Javascript - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как лучше всего разбить строку на куски фиксированной длины и работать с ними в Python?
Anonymous » » в форуме Python - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-