vue+element上传excel文件类型

本文介绍如何在Vue.js应用中结合Element UI库,实现用户上传Excel文件的功能。通过使用JavaScript的FileReader API预览文件,并借助xlsx库解析Excel内容。
<template>
  <div>
	  <el-upload drag
	       :limit=limitNum
	       :auto-upload="false"
	       accept=".xlsx"
	       :action="UploadUrl()"
	       :before-upload="beforeUploadFile"
	       :on-change="fileChange"
	       :on-exceed="exceedFile"
	       :on-success="handleSuccess"
	       :on-error="handleError"
	       :file-list="fileList">
	    <i class="el-icon-upload"></i>
	    <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
	    <div class="el-upload__tip" slot="tip">只能上传xlsx文件,且不超过10M</div>
  	</el-upload>
  <br/>
  <el-button size="small" type="primary" @click="uploadFile">立即上传</el-button>
  <el-button size="small">取消</el-button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        limitNum: 1,  // 上传excell时,同时允许上传的最大数
        fileList: [],   // excel文件列表
      }
    },
    methods:{
      // 文件超出个数限制时的钩子
      exceedFile(files, fileList) {
        this.$message.warning(`只能选择 ${this.limitNum} 个文件,当前共选择了 ${files.length + fileList.length}`);
      },
      // 文件状态改变时的钩子
      fileChange(file, fileList) {
        console.log(file.raw);
        this.fileList.push(file.raw) ;
        console.log(this.fileList);
      },
      // 上传文件之前的钩子, 参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传
      beforeUploadFile(file) {
        console.log('before upload');
        console.log(file);
        let extension = file.name.substring(file.name.lastIndexOf('.')+1);
        let size = file.size / 1024 / 1024;
        if(extension !== 'xlsx') {
          this.$message.warning('只能上传后缀是.xlsx的文件');
        }
        if(size > 10) {
          this.$message.warning('文件大小不得超过10M');
        }
      },
      // 文件上传成功时的钩子
      handleSuccess(res, file, fileList) {
        this.$message.success('文件上传成功');
      },
      // 文件上传失败时的钩子
      handleError(err, file, fileList) {
        this.$message.error('文件上传失败');
      },
      UploadUrl:function(){
       // 因为action参数是必填项,我们使用二次确认进行文件上传时,直接填上传文件的url会因为没有参数导致api报404,所以这里将action设置为一个返回为空的方法就行,避免抛错
        return ""
      },
      uploadFile() {
        if (this.fileList.length === 0){
          this.$message.warning('请上传文件');
        } else {
          let form = new FormData();
          form.append('file', this.fileList);
          this.$axios({
            method:"post",
            url: "/statistical/uploadbug",
            headers:{
              'Content-type': 'multipart/form-data'
            },
            data:form
          }).then(
            res=>{

            },err =>{
            });
        }
      }

    }
  }
</script>

<style scoped>

</style>
{ int alpha = ((uint8_t *)sub_frame->data[3])[y * sub_frame->linesize[3] + x]; int beta = alpha * opacity / 255; ((uint8_t *)frame->data[0])[y * frame->要在 Vue 中使用 Element UI 库解析上传Excel 文件,可以使用 Element UI 提供的 Upload 组件。以下是一个示linesize[0] + x] = ((uint8_t *)pkt.data)[y * pkt.linesize[0] + x] *例代码,演示如何使用 Upload 组件来解析上传Excel 文件: ```vue <template> <div> beta / 255 + ((uint8_t *)frame->data[0])[y * frame->linesize[0] + x] * <el-upload :before-upload="beforeUpload" :on-success="handleSuccess"> <el-button size="small" type="primary"> (255 - beta) / 255; } } av_packet_unref(&pkt); } end: if (sws点击上传</el-button> </el-upload> </div> </template> <script> import XLSX from 'xlsx'; export_ctx) { sws_freeContext(sws_ctx); } if (converted_frame) { av_frame_free(&converted default { methods: { beforeUpload(file) { // 通过判断文件类型,只处理 Excel 文件 const fileType =_frame); } if (codec_ctx) { avcodec_close(codec_ctx); avcodec_free_context(&codec_ctx); file.type; const isExcel = fileType === 'application/vnd.ms-excel' || fileType === 'application/vnd.openxmlformats-officedocument } if (sub_frame) { av_frame_free(&sub_frame); } if (buffer) { free.spreadsheetml.sheet'; if (!isExcel) { this.$message.error('只能上传 Excel 文件!'); return false; (buffer); } if (options) { av_dict_free(&options); } avsubtitle_free(&subtitle); return } return true; }, handleSuccess(response) { // 解析上传Excel 文件 const fileData = response ret; } ``` 这个函数将传入的YUV视频帧转换为libx264编码器支持的像.file.response; const workbook = XLSX.read(fileData, { type: 'binary' }); const sheetName = workbook.Sheet素格式,并将字幕渲染到字幕帧中,然后将视频帧和字幕帧合并,并设置字幕Names[0]; const sheet = workbook.Sheets[sheetName]; const sheetData = XLSX.utils.sheet_to_json(sheet); 帧的透明度,最后返回合并后的视频帧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值