当前位置: 首页> 汽车> 行情 > 网站推广的基本方法是哪四个_郑州富士康小时工_郑州百度关键词seo_网站推广方案有哪些

网站推广的基本方法是哪四个_郑州富士康小时工_郑州百度关键词seo_网站推广方案有哪些

时间:2025/7/14 3:29:35来源:https://blog.csdn.net/lucklymm/article/details/145700610 浏览次数: 0次
网站推广的基本方法是哪四个_郑州富士康小时工_郑州百度关键词seo_网站推广方案有哪些

分片上传需求分析:

项目中很多地方需要上传视频,如果视频很大,上传到服务器需要很多时间 ,这个时候体验就会很差。所以需要前端实现分片上传的功能。

代码分析:

html文件:

<input type="file" id="videoFile" accept="video/*" />
<button id="uploadBtn">上传</button>

javascript 文件:

document.getElementById('uploadBtn').addEventListener('click', async () => {const fileInput = document.getElementById('videoFile');const file = fileInput.files[0];if (!file) {alert('请选择一个文件');return;}const chunkSize = 5 * 1024 * 1024; // 每个分片的大小,例如 5MB//分析存在几个分片,假如文件是10M ,那就是两个分片。const totalChunks = Math.ceil(file.size / chunkSize);//唯一id,这个是必须的,用来区分不同的分片const fileId = Date.now().toString(); // 生成一个唯一的文件ID//遍历分片,去分别上传到服务器for (let chunkNumber = 0; chunkNumber < totalChunks; chunkNumber++) {const start = chunkNumber * chunkSize;const end = Math.min(start + chunkSize, file.size);const chunk = file.slice(start, end);//处理数据给后端需要的格式const formData = new FormData();formData.append('file', chunk);formData.append('fileId', fileId);formData.append('chunkNumber', chunkNumber);formData.append('totalChunks', totalChunks);formData.append('fileName', file.name);try {const response = await fetch('/upload', {method: 'POST',body: formData,});if (!response.ok) {throw new Error('上传失败');}console.log(`分片 ${chunkNumber + 1}/${totalChunks} 上传成功`);} catch (error) {console.error('上传出错:', error);break;}}console.log('所有分片上传完成');
});

分析一下上面的formData:
在这里插入图片描述
更多的数据格式参考文章:点击跳转

服务端处理:

服务器端需要处理每个分片的上传请求,并在所有分片上传完成后将其合并。

接受分片:

服务器端可以使用类似以下的代码来接收分片:

app.post('/upload', (req, res) => {const { fileId, chunkNumber, totalChunks, fileName } = req.body;const chunk = req.files.file;// 保存分片到临时目录const chunkPath = `./temp/${fileId}-${chunkNumber}`;fs.writeFileSync(chunkPath, chunk.data);res.send({ success: true });
});

合并分片:

当所有分片上传完成后,服务器端可以将它们合并成一个完整的文件:

app.post('/merge', (req, res) => {const { fileId, totalChunks, fileName } = req.body;const outputPath = `./uploads/${fileName}`;const writeStream = fs.createWriteStream(outputPath);for (let i = 0; i < totalChunks; i++) {const chunkPath = `./temp/${fileId}-${i}`;const chunk = fs.readFileSync(chunkPath);writeStream.write(chunk);fs.unlinkSync(chunkPath); // 删除临时分片}writeStream.end();res.send({ success: true });
});

前端通知服务器合并分片

在所有分片上传完成后,前端可以发送一个请求通知服务器合并分片:

fetch('/merge', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({fileId: fileId,totalChunks: totalChunks,fileName: file.name,}),
});
关键字:网站推广的基本方法是哪四个_郑州富士康小时工_郑州百度关键词seo_网站推广方案有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: