vue,通过el-upload,以表单提交的格式将文件上传至阿里云oss

oss上传文件官方入口点这里:上传本地文件
含进度条,选取文件后手动上传。

template:


  <!-- 本地文件上传 -->
  <el-upload
    v-if="form.dataFrom === '0'"
    ref="upload"
    action="#"
    accept=".mp4,.ts,.MP3,.AAC" //限制上传的格式
    :on-preview="handlePreview"
    :on-remove="handleRemove"
    :file-list="fileList"
    :auto-upload="false"
    :limit="1"
    :multiple="false"
    :on-exceed="handleExceed"
    :http-request="upLoadFile"
  >
    <div
      slot="trigger" //触发文件选择框的内容
      class="upload"
    >
      <el-input
        v-model="form.dataFormInputData"
        placeholder="请选择文件"
      />
    </div>
  </el-upload>
  
   <!-- 进度条部分 -->
  <div
    v-if="progressFlag"
    class="el_progress"
  >
    <el-progress :percentage="progressPercent" />
  </div>
  
  <div class="confirmUpload">
    <el-button
      size="small"
      type="success"
      @click="submitUpload"
    >
      确认上传
    </el-button>
  </div>

js:

submitUpload() {
	//其他自定义代码...
	this.$refs.upload.submit();
}

upLoadFile(data) {
      const formdata = new FormData();
      const filePath = '你的文件上传至oss后期望其所在的目录位置'
      const filename = '文件名' //data.file.name是默认的文件名

      formdata.append('key', filePath + '/' + filename);
      formdata.append('name', filename);
      formdata.append('policy', 'oss的policy');
      formdata.append('OSSAccessKeyId', 'oss的OSSAccessKeyId');
      formdata.append('success_action_status', 200); //期待的返回的状态码,用于识别上传文件结束
      formdata.append('signature', 'oss的signature');
      formdata.append('file', data.file);// file必须放到最后
      // 进度条
      this.progressFlag = true;
      axios.post(this.ossConfig.host, formdata, {
        headers: {
          'Content-Type': 'multipart/form-data',
        },
        onUploadProgress: progressEvent => { // 进度条
          this.progressPercent = Number((progressEvent.loaded / progressEvent.total * 100).toFixed(2))
        },
      }).then(res => {
        if (res.status === 200) {
          this.$message({
            message: '上传文件成功',
            type: 'success',
          });
          // 进度条重置并隐藏
          this.progressPercent = 0
          this.progressFlag = false
        }
      }).catch(err => {
        // 进度条重置并隐藏
        this.progressPercent = 0
        this.progressFlag = false
        console.log(err);
      })
    },
handleExceed(files, fileList) {
  this.$message.warning(`每次最多可上传一个资源`);
},
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值