当前位置: 首页 > news >正文

网站开发毕设的需求分析北京中小企业建站价格

网站开发毕设的需求分析,北京中小企业建站价格,小程序登录不上什么原因,广州 网站的设计公司在现代网站中#xff0c;越来越多的个性化图片#xff0c;视频#xff0c;去展示#xff0c;因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传#xff1a;将大文件切分成较小的片段#xff08;通常称为分片或块#xff09;#xff0c;然后逐个上传这… 在现代网站中越来越多的个性化图片视频去展示因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传将大文件切分成较小的片段通常称为分片或块然后逐个上传这些分片。这种方法可以提高上传的稳定性因为如果某个分片上传失败只需要重新上传该分片而不需要重新上传整个文件。同时分片上传还可以利用多个网络连接并行上传多个分片提高上传速度。断点续传在上传过程中如果网络中断或上传被中止断点续传技术可以记录已成功上传的分片信息以便在恢复上传时继续上传未完成的部分而不需要重新上传整个文件。这种技术可以大大减少上传失败的影响并节省时间和带宽。 前端实现 input idfile typefile !--用来上传文件--监听change事件获取文件 file实现一个方法 chunkFun 用来切片 const file document.getElementById(file) file.addEventListener(change, (event) {const file event.target.files[0] //获取文件信息const chunks chunkFun(file)uploadFile(chunks) })文件切片 file 接受文件对象注意file的底层是继承于blob的因此他可以调用blob的方法slice进行切片size就是每个切片的大小我这里用了4MB 实际可以根据项目情况来 const chunkFun (file, size 1024 * 1024 * 4) {const chunks []for (let i 0; i file.size; i size) {chunks.push(file.slice(i, i size))}return chunks }循环调用接口上传并且存储一些信息当前分片的索引注意file必须写在最后一个因为nodejs端的multer 会按照顺序去读的不然读不到参数, 最后通过promise.all 并发发送请求等待所有请求发送完成通知后端合并切片。 const uploadFile (chunks) {const List []for (let i 0; i chunks.length; i) {const formData new FormData()formData.append(index, i)formData.append(total, chunks.length)formData.append(fileName, xiezhen)formData.append(file, chunks[i])List.push(fetch(http://127.0.0.1:3000/up, {method: POST,body: formData}))}Promise.all(List).then(res {fetch(http://127.0.0.1:3000/merge,{method: POST,headers:{Content-Type: application/json},body:JSON.stringify({fileName: xiaoManXieZhen,})}).then(res {console.log(res)})}) }nodejs端实现 安装依赖 express 帮我们启动服务并且提供接口multer 读取文件存储cors 解决跨域 引入模块 import express from express import multer from multer import cors from cors import fs from node:fs import path from node:path提供两个接口 up 用来存储切片merge 合并切片 初始化 multer.diskStorage destination 存储的目录filename 存储的文件名我是通过index-文件名存储的你也可以改 合并逻辑 读取upload目录下面的所有文件 也就是所有的切片 0-xiezhen 1-xiezhen 2-xiezhen 3-xiezhen读取之后返回的是一个数组但是读取的时候会乱序所以从小到大排个序用了sort排完序之后读取每个切片的内容通过 fs.appendFileSync 合并至一个文件最后删除合并过的切片 完成。respect const storage multer.diskStorage({destination: (req, file, cb) {cb(null, uploads/)},filename: (req, file, cb) {cb(null, ${req.body.index}-${req.body.fileName})} }) const upload multer({ storage }) const app express()app.use(cors()) app.use(express.json())app.post(/up, upload.single(file), (req, res) {res.send(ok) })app.post(/merge, async (req, res) {const uploadPath ./uploadslet files fs.readdirSync(path.join(process.cwd(), uploadPath))files files.sort((a, b) a.split(-)[0] - b.split(-)[0])const writePath path.join(process.cwd(), video, ${req.body.fileName}.mp4)files.forEach((item) {fs.appendFileSync(writePath, fs.readFileSync(path.join(process.cwd(), uploadPath, item)))fs.unlinkSync(path.join(process.cwd(), uploadPath, item))})res.send(ok) })app.listen(3000, () {console.log(Server is running on port 3000) })
http://www.dnsts.com.cn/news/135034.html

相关文章:

  • wordpress小说站山东人才招聘网
  • 做网站 页面自适应wordpress地址应该填什么意思
  • 网站后台登陆模板网站建设600元全包
  • 手机网站建设的影响如何写一个可以做报价计算的网站
  • 建站公司哪个好wordpress total主题
  • 淮南网站建设全包南京学校网站建设策划
  • 南京网络科技网站建设济南公积金网站
  • 重庆营销型网站开发做网站属于什么技术
  • 科技广告公司网站建设青浦网站设计
  • 旅游网站自己怎么做深圳网页设计科技有限公司
  • 深圳 微网站建设ydgcm网站索引量下降
  • 苏州商城网站建设网站推广建设加盟
  • 网站模板去哪要注册公司的条件和费用
  • 老年大学网站建设北京手机版建站系统开发
  • 建设一个营销型网站用dw做的网站怎么发布
  • 苏中建设 官方网站网络网站开发培训
  • 淘客返利网站建设网页设计分为几个部分
  • 软件项目管理考试题及答案优化稳定网站排名
  • 大连装修网站推广长沙企业推广
  • 福州建站网络公司比特币交易网站可以做空吗
  • 网站开发团队简介如何写织梦响应式网站
  • 部队网站建设招标wordpress安装不了插件吗
  • 制作小网站免费软件下载app
  • 宁波网站建设公司信息查询吉安做网站
  • 网站开发费用构成网站搜索 收录优化
  • 纯文本网站做seo是要先有网站吗
  • 国外开源网站建设软件查企业的app软件 排名
  • 网站建设分金手指排名二九邢台营销型网站制作
  • 宁波网站建设风格公司宣传策划方案
  • 一流的基础微网站开发公司的网站建设费进入什么科目