大文件分割切片上传

这篇具有很好参考价值的文章主要介绍了大文件分割切片上传。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,获取到file文件

async uploadPptFile(file){
	// 放入文件列表
    this.preprocess(file)
},

2,进行文件切割

切割标准以3-10M为基准单位,获取可以切割的个数进行遍历,使用formData包装好切割的参数去请求数据;

preprocess(File){
            this.message = this.$message({
                message: "正在上传中",
                type: "info",
                duration: 0,
            });
            const initUploadParams = {
                "resource_size":File.size, //文件大小
                "resource_hash": '', //文件的md5
                "resource_name": File.name, //文件名
                "locale": 'zh',
                "group":'file'
            }
            const fileSize = File.size;
            // 调用后端检查文件上传情况接口
           this.$http.post(this.$util.upLoadPPt.url,{
            ...initUploadParams
           }).then( async (res)=>{
                if(res.data.error*1 === 0){
                    if(res.data.savedPath.length === 0){
                        let chunkSize = 10000000;   //每一个切片大小
                        let chunkCount = Math.ceil(fileSize / chunkSize);    //计算当前选择文件需要的分片数量,需要切片的数量
                        for(var i = 0 ; i< chunkCount ; i++){
                            if(this.isUploadPpt){
                                let start = i*chunkSize,
                                end = Math.min(fileSize, start + chunkSize)
                                this.percentage = parseInt((i+1) / chunkCount * 100)
                                var form = new FormData();
                                form.append('resource_chunk', File.raw.slice(start, end));
                                form.append('resource_name' , File.name);
                                form.append('resource_ext', res.data.resourceExt);
                                form.append('chunk_total', chunkCount);
                                form.append('chunk_index', i+1);
                                form.append('resource_temp_basename', res.data.resourceTempBaseName);
                                form.append('group', 'file');
                                form.append('group_subdir', res.data.groupSubDir);
                                form.append('locale', 'zh');
                                form.append('resource_hash', '');
                                await this.getMethods(form , File)
                            }else{
                                break
                            }
                        }
                    }
                }
            })
        },

3,遍历请求分割的接口上传

每次将分割好的文件给到接口,后端会将其整合起来 最终返回回来;文章来源地址https://www.toymoban.com/news/detail-551771.html


        getMethods(formdata , File) {
            if(!this.loadingPptFile || this.isStop){
                this.message.close();
                return
            }
            return new Promise((resolve , reject) => {
                uploadingPptFile(formdata).then(res=>{
                    if(res.error === 0 && res.savedPath !== ''){
                        if(!this.loadingPptFile){
                            this.message.close();
                            return
                        }
                        this.loadingPptFile = false;
                        this.pptFileLists = [{
                            url: res.savedPath,
                            name: File.name
                        }];
                        this.message.close();
                        this.$message.success('上传成功!')
                        this.isLoading = false
                        this.ruleForm.file_name = this.pptFileLists[0].name
                    }
                    resolve();
                })
            })
        },```

到了这里,关于大文件分割切片上传的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一次理清前端文件上传操作(单个,多个,大文件切片)

    相信大家在工作中也会遇到前端文件上传的需求,虽然已经在项目中使用FormData和elementUI中upload组件都实现过类似上传效果,但自己对这块一直一知半解,因此做一个笔记梳理一下前端方面的文件上传操作,以供日常参考。 总体来说常用的两种方式:二进制传输和base64格式直

    2024年02月03日
    浏览(47)
  • vue实现大文件上传(切片上传)

    上传视频的时候,如果视频体积过大,一次性上传就会出现各种问题,或者由于网络不佳的原因导致上传失败,这时候就需要大文件上传的常见方法,如切片上传,顾名思义,切片上传就是将一个大文件切成一份一份的小文件,再去将每一个小文件上传。 首先还是借助iview的

    2024年02月09日
    浏览(40)
  • 【Java项目】Vue+ElementUI+Ceph实现多类型文件上传功能并实现文件预览功能

    先说一下我们的需求,我们的需求就是文件上传,之前的接口是只支持上传图片的,之后需求是需要支持上传pdf,所以我就得换接口,把原先图片上传的接口换为后端ceph,但是其实大致的处理流程都差不多,都是上传到后端然后得到url地址。 要实现点击预览文件,那么就需

    2024年02月15日
    浏览(49)
  • SpringBoot整合hdfs,实现文件上传下载删除与批量删除,以及vue前端发送请求,实现前后端交互功能;

    部分工具类代码参考文章:https://blog.csdn.net/qq_27242695/article/details/119683823 前端实现效果 HDFSController HDFS FileInterface (文件接口) HDFS FileImplService (文件接口实现类) HDFSConfig(从yaml读取文件) HDFSUTils 前端vue代码:

    2024年02月16日
    浏览(74)
  • Spring Boot + MinIO 实现文件切片极速上传技术

    🎉欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:SpringBoot 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指

    2024年02月04日
    浏览(51)
  • 大文件切片上传+断点续传解决方案-前后端实现(附源码)

    上传文件大家应该都做过,前端直接把file文件传给后端就ok了,但是大文件这样传就会造成页面假死,体验极差。如果遇到网络不稳定的时候,中途上传失败的话,又要从头开始传,本来文件就大,还慢。所以今天我们用一种新方法-切片上传+断点续传 页面上很简单,我就放

    2024年02月09日
    浏览(39)
  • 大文件切片上传

    创建组件:创建一个组件用于处理文件上传,命名为 Upload.vue 。 添加切片逻辑:在 startUpload 方法中,我们需要将选择的文件切成多个小块进行上传。可以使用 FileReader 进行文件切片操作。 3.切片上传到服务器:可以使用 axios 库进行文件上传操作。 4.添加进度条:可以使用

    2024年02月12日
    浏览(38)
  • 实现微信小程序web-view内嵌H5中的下载功能(大文件切片下载)

    微信小程序的开发框架是uniapp,使用uniapp脚手架搭建,其中有页面是展示另一个小程序,在这个页面主体内容使用了标签将H5的页面内容展示,H5中有页面存放了下载的路径。点击下载按钮下载文件,或者预览文件让用户手动保存。 如果是pc端,下载用一个 a 标签就很容易,但

    2024年02月10日
    浏览(111)
  • 用JavaScript实现文件的上传与下载

    一、文件上传 1、普通文件上传 JavaScript 可以使用表单提交来实现文件上传。首先,在 HTML 中创建一个文件输入框:  然后,在 JavaScript 中获取文件输入框的引用,并在其上设置事件监听器,如下所示:   在事件监听器中,可以使用 fileInput.files[0] 属性获取选择的文件,然后

    2024年02月06日
    浏览(89)
  • C#结合JavaScript实现多文件上传

    目录 需求 引入 关键代码 操作界面 ​JavaScript包程序 服务端 ashx 程序 服务端上传后处理程序 小结 在许多应用场景里,多文件上传是一项比较实用的功能。实际应用中,多文件上传可以考虑如下需求: 1、对上传文件的类型、大小有一个基本的控制。 2、上传文件时有一个进

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包