SpringBoot+VUE 简单分片文件上传-前端1

前言
本文主要实现web文件上传,前端VUE如何进行文件信息获取后放到集合中,后续通过request传输到后端
一、访问ElementPlus获取上传组件
访问到ElementPlus选取上传组件到我们的项目中
在这里插入图片描述
这里由于后续我需要进行一些定制所以没有使用VUE里的上传组件,但是达到的文件上传目的是一样,这个大家可自行进行选择。
HTML

<div style="display: flex;margin-top: 3%;">
  <div>
    <div style="margin-bottom: 5%;">
      <input type="file" @change="handleChange" id="default-btn">
    </div>

  </div>
     <el-button @click="upload" size="small" type="success">分片上传</el-button>
</div>

js

  //上传
    handleChange(e) {
      this.file = null
      this.name = null
      this.chunks = null
      this.file = e.target.files[0]
      this.name = this.file.name
      // 分片大小根据实际需要 调整 可以配置在前端配置文件中
      this.chunks = Math.ceil(this.file.size / 1024 / 1024 / 10) // 10MB一片
      // this.initWebSocket() //开启websocket
    },
     upload(){
      let than=this;
      let filename=this.name.substring(this.name.lastIndexOf("."), this.name.length);
       than.loading_Update=true;//这个是lading加载动画,这个可以去掉
       // than.dialogVisible=true;
       // 现将文件分片
       const formData = new FormData()
       formData.append('file', this.file.slice(this.chunk * 1024 * 1024 * 10, (this.chunk + 1) * 1024 * 1024 * 10))//这是第几分卷(具体的文件包)
       formData.append('chunk', this.chunk)//第几卷
       formData.append('chunks', this.chunks)//分卷的数量
       formData.append('name', this.name)//文件名称
       //projectcode这个是我自己定义的参数,不是必须的;
       formData.append('projectcode',sessionStorage.getItem("projectcode"))
       // 然后递归调用文件上传接口(概念就是多次request将文件全部发送到后端)
       request.post('api/uploadFile/splitFileUpload', formData)
           .then(res=> {
             this.chunk++
             //判断是否全部上传,如果没有自己调用自己到文件全部上传完成为止
             if (this.chunk < this.chunks) {
               this.upload()
             }
             //这是分卷上传完成后我自己进行的调用,在这里我做了文件上传合成后的文件进行的解压存储数据的操作,在这里可以进行忽略一下代码
             else if(res=="成功") {
               request.get("/api/file/import", {
                 params: {
                   contractor: this.item.companyname,
                   name: this.name,
                   projectcode:sessionStorage.getItem("projectcode")
                 }
               }).then(res=>{
                 if(res.code==1){
                   this.$message({
                     type:"success",
                     message:"上传成功"
                   })
                   this.message="上传成功"
                   than.loading_Update=false;
                   this.url=res.data
                 }else{
                   this.$message({
                     type:"danger",
                     message:res.message
                   })
                   this.message=res.message
                 }
                 //初始化
                 this.file = null
                 this.name = null
                 this.chunks = null
                 //关闭websocket
                 // this.colseConnect()
               })
             }
           })
    },

相关的参数(this.XXX中的XXX)需要大家自己进行在
data(){
raturn{
}
},
进行定义即可防止提示错误,在这里我我就不过多解释了。
到这里前端的分卷上传就完成了,后续我会不上后端1的代码完成这次简单的分片上传。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值