JS 上传音频超过5M 分成10块分块上传 JS代码
时间: 2024-10-14 11:07:18 浏览: 29
在JavaScript中,如果你需要上传大文件,如音频大于5MB,并将其分成多个小块进行分块上传,通常可以使用FileReader API配合fetch或axios等库来实现。这里是一个基本的分块上传示例:
```javascript
const CHUNK_SIZE = 5 * 1024 * 1024; // 每块大小,5MB
function uploadFile(file) {
const reader = new FileReader();
let offset = 0;
const totalChunks = Math.ceil(file.size / CHUNK_SIZE);
function uploadChunk(chunkNumber) {
if (offset + CHUNK_SIZE > file.size) { // 如果还有剩余,读取最后一块
const chunk = file.slice(offset);
} else {
const chunk = new Blob([reader.readAsArrayBuffer(file.slice(offset, offset + CHUNK_SIZE))], { type: file.type });
}
const formData = new FormData();
formData.append('file', chunk, `chunk-${chunkNumber}`);
fetch('your-api-url', {
method: 'POST',
body: formData,
})
.then(response => response.text())
.then(data => {
console.log(`Uploaded chunk ${chunkNumber + 1}`);
if (chunkNumber < totalChunks - 1) { // 如果不是最后一个块,继续上传下一个
uploadChunk(chunkNumber + 1);
} else {
console.log('All chunks uploaded');
}
})
.catch(error => {
console.error('Error uploading chunk:', error);
});
offset += CHUNK_SIZE;
}
uploadChunk(0); // 开始上传第一个块
}
// 调用函数并传入你要上传的音频文件
uploadFile(fileInput.files[0]);
```
在这个例子中,你需要替换`your-api-url`为你实际的服务器接收分块上传请求的URL。每个分块都会包含一个唯一的标识,以便服务端拼接完整的文件。
阅读全文