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

网络推广网站推广淘宝运营商网站建设过时了

网络推广网站推广淘宝运营商,网站建设过时了,wordpress登入不进去,记事本怎样做网站​ 上传功能的实现,点击上传按钮,判断添加的文件是否符合要求,如果符合把他放入文件列表中,并把他的状态设置为等待中,对于每个文件,把他们切分为chunksize大小的文件片段,再检查他的状态是否为…


上传功能的实现,点击上传按钮,判断添加的文件是否符合要求,如果符合把他放入文件列表中,并把他的状态设置为等待中,对于每个文件,把他们切分为chunksize大小的文件片段,再检查他的状态是否为uploading,并且判断他是否是第一次上传,如果是第一次上传,就从第一给分片上传,如果不是,就从之前上传的分片继续上传,同时,每上传完一个分片,uploadSize和uploadPercent就会更新,如果点击删除按钮,或者暂停上传,则中止上传

  1. 为每个视频文件创建新的属性,包括 uid、文件名、状态等信息,用于管理每个视频的上传任务。
  2. 创建一个视频数组 fileList,用来存放所有待上传的视频文件,并记录每个视频文件的状态、进度等。
  3. 实现文件分片上传。
const fileList = ref([]);
const addFile = (file) => {file = file.fileif (fileList.value.length > sysSettingStore.sysSetting.videoPCount) {proxy.Message.warning(`最多可以添加${sysSettingStore.sysSetting.videoPCount}个视频`);return}let fileName = file.nameconst lastPoint = fileName.lastIndexOf('.')fileName = lastPoint == -1 ? fileName : fileName.substring(0, lastPoint)const fileItem = {file: file,uid: file.uid,fileName: fileName,status: STATUS.waiting.value,uploadSize: 0,totalSize: file.size,uploadPercent: 0,pause: false,chunkIndex: 0,errMsg: null,};fileList.value.push(fileItem);if (fileItem.totalSize == 0) {fileItem.status = STATUS.emptyfile.value;return;}
//   判断文件大小if (fileItem.totalSize > sysSettingStore.sysSetting.videoSize * 1024 * 1024) {fileItem.status = STATUS.largefile.value;return;}//   正在上传的文件let uploadingFiles = fileList.value.filter((item) => {return item.status == STATUS.uploading.value;});if (uploadingFiles.length > MAX_UPLOADING) {return;}uploadFile(fileItem.uid);
};

切片上传具体为:

1.根据getFileByUid()找到当前文件

// 通过uid找到当前文件
const getFileByUid = (uid) => {const currentFile = fileList.value.find((item) => {return item.uid == uid;});return currentFile;
};

2.对当前文件的状态设置为uploading,进行切片

3.请求生成一个上传 ID,uploadId 是服务器生成的唯一标识符,用于标识一个文件的上传任务。

当上传被暂停或中断时,使用相同的 uploadId 可以确保在恢复上传时,服务器能够继续处理文件的分片,而不是将其视为一个全新的文件上传任务。这样就避免了不同上传任务之间的混乱。
即使文件被分割成多个分片上传,所有分片都会与相同的 uploadId 关联。
同一个文件的所有分片的 uploadId 都是一致的。

4.进行断点处理

为什么设置chunkIndex = chunkIndex ? chunkIndex : 0?
这是为了支持断点续传, 即从上传进度的某个位置继续上传文件的剩余部分,而不是重新从头开始上传。

5.将文件的状态设置为success,进度为100%

6.开始上传下一个待上传的文件。

const uploadFile = async (uid, chunkIndex) => {// 当前文件const currentFile = getFileByUid(uid);// 文件状态设置为uploadingcurrentFile.status = STATUS.uploading.value;const file = currentFile.file;const fileSize = currentFile.totalSize;const chunks = Math.ceil(fileSize / CHUNK_SIZE);if (!currentFile.uploadId) {// 如果第一次上传的时候,请求服务端生成一个uploadIdlet resultData = await proxy.Request({url: proxy.Api.preUploadVideo,params: {fileName: currentFile.fileName,chunks,},errorCallback: (errorMsg) => {currentFile.status = STATUS.fail.value;currentFile.errMsg = errorMsg;},});if (!resultData) {return;}currentFile.uploadId = resultData.data;}
//   for(let i=chunkIndex; i<chunks; i++) 中的
//   i=chunkIndex 表示从指定的分片索引 chunkIndex 开始上传,
//   而不是从 0 开始。这是为了支持断点续传, 即从上传进度的
//   某个位置继续上传文件的剩余部分,而不是重新从头开始上传。
//   循环处理chunkIndex = chunkIndex ? chunkIndex : 0;for (let i = chunkIndex; i < chunks; i++) {if (currentFile.pause || currentFile.del) {break;}let start = i * CHUNK_SIZE;let end = start + CHUNK_SIZE >= fileSize ? fileSize : start + CHUNK_SIZE;let chunkFile = file.slice(start, end);let uploadResult = await proxy.Request({url: proxy.Api.uploadVideo,dataType: "file",params: {chunkFile: chunkFile,chunkIndex: i,uploadId: currentFile.uploadId,},showError: false,errorCallback: (errorMsg) => {currentFile.status = STATUS.fail.value;currentFile.errMsg = errorMsg;},uploadProgressCallback: (event) => {// event.loaded 表示已上传的字节数。let loaded = event.loaded;if (loaded > fileSize) {loaded = fileSize;}currentFile.uploadSize = i * CHUNK_SIZE + loaded;currentFile.uploadPercent = Math.floor((currentFile.uploadSize / fileSize) * 100);},});if (uploadResult == null) {break;}currentFile.chunkIndex = i;if (i < chunks - 1) {continue;}currentFile.status = STATUS.success.value;currentFile.uploadPercent = 100;}const nextItem = fileList.value.find((item) => {return item.status == STATUS.waiting.value;});if (nextItem) {uploadFile(nextItem.uid);}
};最后转化为字符串提交uploadFileList:JSON.stringify(uploadFileList)


文章转载自:

http://29Gs1qrr.zdhjb.cn
http://IImsKqi0.zdhjb.cn
http://LZuUCQlt.zdhjb.cn
http://KLbWdS2L.zdhjb.cn
http://y9ocVr52.zdhjb.cn
http://fQCO6xT3.zdhjb.cn
http://3m65LGmc.zdhjb.cn
http://UmSLbDfA.zdhjb.cn
http://l7G819aY.zdhjb.cn
http://8PcYgFL0.zdhjb.cn
http://rI9tvkwU.zdhjb.cn
http://iQyiqcLf.zdhjb.cn
http://4zpztc3X.zdhjb.cn
http://2S25AGbO.zdhjb.cn
http://qs7PdONF.zdhjb.cn
http://f3DbHRyy.zdhjb.cn
http://iA6zUffo.zdhjb.cn
http://fcA0wHFZ.zdhjb.cn
http://wb9PmIJ9.zdhjb.cn
http://bdtEWy1a.zdhjb.cn
http://Nhwj5twX.zdhjb.cn
http://VXk2Oen8.zdhjb.cn
http://HRGMbNis.zdhjb.cn
http://1RzQ2a1t.zdhjb.cn
http://piOdodMI.zdhjb.cn
http://2JO4IECr.zdhjb.cn
http://JbrxQMfX.zdhjb.cn
http://K5ePcRLk.zdhjb.cn
http://kLtSj0yp.zdhjb.cn
http://XncSsCh1.zdhjb.cn
http://www.dtcms.com/wzjs/742871.html

相关文章:

  • 搭建网站 赚钱范文网站学校技防 物防建设
  • 我想建网站做推广哪些网站可以兼职做设计
  • 天津网站建设论坛网站建设报价比较
  • 英国网站后缀户外拓展公司网站开发
  • 网站建设费如何记账网站只做优化
  • 做家电网站好张家界网络
  • 东莞阳光网官方网站中山市网站开发外包公司
  • 建设电子商务网站网站建设公司内部情况
  • 动易网站 修改栏目名字wordpress 主题预览
  • 郑州低价网站制作wordpress 个人简洁
  • 蒙古文网站建设情况1688官网app下载
  • 工商局网站建设查不到建筑施工组织设计毕业设计
  • 郸城县做网站thinkphp做的网站怎么预览
  • 网页游戏大全4399宁波网站推广优化公司
  • 网站是先制作后上线么公司网站修改 优帮云
  • 企业网站的设计150m网站空间
  • 网站 整体架构义乌门户网站建设
  • 长春建设局网站网页设计与制作(第3版)书籍
  • 有什么教做维c甜品的网站河西苏州网站建设
  • 安庆网站建设公司简中铁建设集团有限公司总部在哪
  • 网站建设产品分类网站开发模板下载
  • 丽水北京网站建设自由空间网站建设
  • 南京外贸网站建设案例开发网站网络公司排行
  • 衡阳企业网站建设老铁seo外链工具
  • 嘉峪关网站seo杭州g20网站建设公司
  • 山东省住房和城乡建设厅定额站子网站wordpress软件无法登陆
  • 六站合一的应用场景汕头seo优化流程
  • 网站建设素材图片江津网站建设怎么样
  • 怎么选择合适的网站开发公司阿里云商业网站建设视频
  • 杭州网站建站模板做好宣传信息网推广工作