element-ui自定义同步上传

本文解决了上传文件格式限制及axios组件不支持file上传的问题,通过accept属性与自定义http-request方法实现,确保只有特定格式文件(如.jpg、.png)可上传,并优化了axios组件以支持文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:主要解决了之前遗留下来的上传不限制文件格式,还有axios封装的组件不支持file上传的问题

<!--主要是accept以及http-request解决了上述问题-->
 <el-form-item label="logo:"
                      prop="logo">
          <el-upload class="upload-demo"
                     :action="apiUrl"
                     :headers="headers"
                     accept=".jpg,.png,.jpeg"
                     :on-preview="handlePreview"
                     :on-remove="handleRemove"
                     :on-success="handleSuccess"
                     :before-upload="beforeAvatarUpload"
                     :name="img"
                     :file-list="fileList"
                     :before-remove="beforeRemove"
                     :on-exceed="excedeImage"
                     :limit="1"
                     :http-request="requestFile"
                     list-type="picture">
            <el-button size="small"
                       type="primary">点击上传</el-button>
            <div slot="tip"
                 class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
          </el-upload>
        </el-form-item>

js部分,只贴部分关键的了

methods: {
	requestFile (param) {
      this.ruleForm.logo = param.file
    },
    // 提交操作 
    submitForm (formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) { //表单验证
          this.ladingStatus = true //开启loading
          this.$http({
            url: this.$http.adornUrl('/api/AdminCurrency/addCurrency'),
            method: 'post',
            data: this.$http.adornData(this.ruleForm, true, 'file')
          }).then(({ data }) => {
            this.ladingStatus = false //关闭
            if (data.code == '1') { //添加成功
              this.$message({ //成功提示
                type: 'success',
                message: data.msg
              })
              this.reload()
              this.visible = false
            } else {
              this.$message({ //失败提示
                type: 'error',
                message: data.msg
              })
            }
          })
        } else {
          return false
        }
      })
    }
}

再次优化的axios组件,全部代码在我之前的帖子有,我就不全贴了

/**
 * post请求数据处理
 * @param {*} data 数据对象
 * @param {*} openDefultdata 是否开启默认数据?
 * @param {*} contentType 数据格式
 *  json: 'application/json; charset=utf-8'
 *  form: 'application/x-www-form-urlencoded; charset=utf-8'
 */
http.adornData = (data = {}, openDefultdata = true, contentType = 'text') => {
  // var dataSign = sort_ASCII(JSON.stringify(data))
  var defaults = {
    // 't': new Date().getTime()
  }
  data = openDefultdata ? merge(defaults, data) : data
  if (contentType === 'file') { // 带文件上传
    var form = new FormData()
    for (var key in data) {
      form.append(key, data[key])
    }
    return form
  }
  return contentType === 'json' ? JSON.stringify(data) : qs.stringify(data)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值