uni-app uni.uploadFile传输时header参数转为小写问题

uni-app uni.uploadFile传输时header参数转为小写问题

测试过的手机:

11

操作步骤:

预期结果:

实际结果:

bug描述:

uni.uploadFile传输的时候,为啥header参数都转为小写??是不是太作了??

```
项目属性
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOS
HBuilderX类型 正式
HBuilderX版本号 3.4.7
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
2 回复

啥啥啥?没明白啥意思


在使用 uni.uploadFile 进行文件上传时,如果你在 header 参数中设置了自定义的请求头,可能会遇到请求头字段被自动转换为小写的问题。这是因为在某些环境下(如微信小程序),uni.uploadFile 的底层实现可能会对请求头字段进行标准化处理,将其转换为小写。

问题描述

例如,你设置了如下的 header 参数:

uni.uploadFile({
  url: 'https://example.com/upload',
  filePath: filePath,
  name: 'file',
  header: {
    'Custom-Header': 'value'
  },
  success: (res) => {
    console.log(res);
  },
  fail: (err) => {
    console.error(err);
  }
});

在发送请求时,Custom-Header 可能会被转换为 custom-header

解决方案

如果你需要保持请求头字段的大小写不变,可以考虑以下几种解决方案:

  1. 使用 uni.request 替代 uni.uploadFile: 如果你不需要使用 uni.uploadFile 的特定功能,可以使用 uni.request 来手动处理文件上传,这样可以完全控制请求头的大小写。

    uni.request({
      url: 'https://example.com/upload',
      method: 'POST',
      header: {
        'Custom-Header': 'value'
      },
      data: formData, // 手动构建 FormData
      success: (res) => {
        console.log(res);
      },
      fail: (err) => {
        console.error(err);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!