以下是一个使用纯JavaScript和PHP来分段上传大文件的解决方法:
前端代码(使用AJAX和JavaScript):
function uploadFile(file) {
var formData = new FormData();
formData.append('file', file);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload.php', true);
xhr.onload = function() {
if (xhr.status === 200) {
console.log('文件上传成功!');
} else {
console.log('文件上传失败!');
}
};
xhr.upload.onprogress = function(e) {
var percent = (e.loaded / e.total) * 100;
console.log(percent + '% 已上传');
};
xhr.send(formData);
}
function sliceFile(file, start, end) {
var slice = file.slice || file.mozSlice || file.webkitSlice;
return slice.call(file, start, end);
}
function uploadLargeFile(file) {
var chunkSize = 1024 * 1024; // 每个分片的大小为1MB
var totalChunks = Math.ceil(file.size / chunkSize);
var currentChunk = 0;
function uploadChunk() {
var start = currentChunk * chunkSize;
var end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
var chunk = sliceFile(file, start, end);
uploadFile(chunk);
currentChunk++;
if (currentChunk < totalChunks) {
setTimeout(uploadChunk, 1000); // 间隔1秒上传下一个分片
}
}
uploadChunk();
}
var fileInput = document.getElementById('file-input');
fileInput.addEventListener('change', function(e) {
var file = e.target.files[0];
uploadLargeFile(file);
});
后端代码(使用PHP):
请注意,上述代码仅提供了一个基本的示例,你可能需要根据自己的需求进行修改和优化。