el-upload添加请求头

在Vue项目中使用ElementUI的el-upload组件上传文件时遇到跨域问题,原因是请求头未携带token。通过在computed属性中获取localStorage中的jwt,并将其添加到headers中,成功解决了问题。修改后的代码能够正常发送携带token的上传请求,实现了文件的顺利上传。

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

solution

Vue项目,需要上传文件

task

使用elementUIel-upload组件实现文件的上传

action

代码如下

  <el-upload
            class="upload-demo"
            drag
            action="http://47.92.112.6:8000/api/admin/calc/file"
            :multiple="false"
            :show-file-list="true"
            accept=".rar,.zip"
            :limit=1
        >
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
          <div class="el-upload__tip" slot="tip">只能上传rar/zip文件</div>
        </el-upload>

上传文件报错 出现跨域问题,查看请求头因为没有携带token,(项目中使用jwt作为用户身份凭证)
在这里插入图片描述
于是增加请求头,查看官网API,需要增加 headers请求头
在这里插入图片描述
修改代码如下,增加 headers

<el-upload
            class="upload-demo"
            drag
            action="http://47.92.112.6:8000/api/admin/calc/file"
            :multiple="false"
            :show-file-list="true"
            accept=".rar,.zip"
            :limit=1
            :headers="headers"
        >
          <i class="el-icon-upload"></i>
          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
          <div class="el-upload__tip" slot="tip">只能上传rar/zip文件</div>
        </el-upload>

computed内增加如下内容

computed: {
    headers(){
      const jwt=localStorage.getItem('jwt')
      return{
        jwt:jwt
      };
    },

获取存储在localStorage中的jwt,加载请求头上
调试,文件上传成功,请求头如下
在这里插入图片描述

在这里插入图片描述

result

vue中,computed表示“计算属性”,是根据依赖关系进行缓存的计算,只有在它的相关依赖发生改变时才会进行更新,所以在computed中获取jwt,便于获得最新的数据

以前没有学过Vue,直接上手写项目,多有不熟练之处,敬请指正

### 如何在 el-upload 组件中设置或增加请求头配置 在使用 `el-upload` 组件时,可以通过其内置属性 `headers` 来设置自定义的 HTTP 请求头。该属性接收一个对象作为参数,其中键值对表示要传递给服务器的头部字段和对应的值[^2]。 以下是完整的代码示例以及说明: #### 实现代码 ```vue <template> <el-upload class="upload-demo" action="https://example.com/upload" <!-- 替换为目标上传地址 --> :headers="customHeaders" :on-success="handleSuccess" :before-upload="beforeUpload"> <el-button type="primary">点击上传</el-button> </el-upload> </template> <script> export default { data() { return { customHeaders: { // 自定义请求头 Authorization: 'Bearer your-token-here', // 设置 token 或其他认证信息 'Custom-Header': 'HeaderValue' // 添加额外的自定义头部 } }; }, methods: { handleSuccess(response, file, fileList) { console.log('上传成功:', response); }, beforeUpload(file) { const isCorrectType = file.type === 'image/jpeg'; // 验证文件类型 const isLt2M = file.size / 1024 / 1024 < 2; // 文件大小验证 (小于 2MB) if (!isCorrectType) { this.$message.error('仅允许上传 JPEG 图片!'); } if (!isLt2M) { this.$message.error('图片大小不得超过 2MB!'); } return isCorrectType && isLt2M; } } }; </script> ``` #### 关键点解析 1. **`headers` 属性** 使用 `headers` 属性可以指定上传请求中的自定义头部信息。例如,在上述代码中设置了 `Authorization` 和 `Custom-Header` 字段[^2]。 2. **动态更新 headers** 如果需要根据用户的登录状态或其他条件动态修改 `headers` 的值,可以在 Vue 数据绑定的基础上调整逻辑。例如通过 Vuex 获取当前用户的 Token 并赋值到 `customHeaders.Authorization` 中[^2]。 3. **注意事项** - 确保目标服务器能够识别并处理这些自定义头部信息。 - 若未正确配置 `headers`,可能导致身份验证失败等问题[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值