element 框架 el-upload 上传文件问题

本文详细解析了在使用Vue结合Element UI框架中,遇到的文件上传跨域问题及解决方法。通过调整el-upload组件的action属性,正确配置本地开发与生产环境的上传路径,避免了跨域错误。

在使用Vue+element 中的el-upload组件做文件上传时,最根本的原因是把路径写错,导致系统提示跨域错误,直接看代码:

 <el-upload
  :action="targetAction"
  :show-file-list="false" 
  :auto-upload="true" 
  :before-upload="beforeAvatarUpload" 
  :on-success="successFun" 
  :on-error="errorFun">
  <el-button size="small" type="primary">点击上传</el-button>
 </el-upload>    



data() {
  return {
    targetAction: ''
  }
}

el-upload其他属性就不多说,官方文档都有,这里只说action属性,绑定的targetAction就是我们需要上传的路径。

开发的过程中我犯了两个错误:
1、因为是连着本地后台开发,所以当我直接写后台路径加接口名称的时候,报500,因为域名不同肯定是会报跨域问题的,如下

this.targetAction =   'http://88.128.19.40:8181/api/configurationController/loadConfig'

2、需要注意的是,webpack已经帮助我们做了转发代理,所以我们在访问后台才不会出现跨域问题,但是我忘了代理转发过程中已经对路径进行重写,此时报了404,我上传的路径如下:

// 这里的window.location.origin 即 http://localhost:8020
this.targetAction =  `${window.location.origin}/api/configurationController/loadConfig`

此时我找到config下的index.js,可以看到pathRewrite属性已经把路径重写为/apiurl,所以我们在开发环境下必须加上这一段,并且生产环境中是不需要的

那接下来的事情就很明确了,在上传文件前确认当前的环境,然后根据不同环境对路径进行重写,这样便于我们维护和扩展,所以我们接下来看到我们是如何定义系统中的环境的:

找到config/dev.env.js:

找到config/pro.env.js:

接下来我们获取环境,并且当环境为development时和production时对路径进行不同定义,代码如下:

let baseUrl = process.env.NODE_ENV === 'production'?'':'/apiurl';

this.targetAction =  `${window.location.origin}/api/configurationController/loadConfig`

到这里我们上传文件的功能就大功告成了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值