uni-app 报严重的错误.uni.uploadFile() 上传数据参数formData 传输的数据不完整

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app 报严重的错误.uni.uploadFile() 上传数据参数formData 传输的数据不完整

产品分类

uniapp/App

开发环境、版本号、项目创建方式

项⽬目信息 详情
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.98
手机系统 iOS
手机系统版本号 iOS 17
手机厂商 苹果
手机机型 14pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码

uni.uploadFile({
  url: this.$api.website() + _Data.team_apply_add_url,
  files: images,
  filePath: '',
  name: '',
  formData: this.info,
  success: (res) => {
    let result = JSON.parse(res.data);
  }
});

// 下面是info的内容
info: {
  project_id: '',
  project_title: '',
  subpackage_id: '',
  subpackage_title: '',
  level_id: '',
  level_title: '',
  title: '',
  title2: '',
  idcard: '',
  idcard2: ''
}

操作步骤

一直复现

预期结果

idcard2=’’, 也要传输到后台api中

实际结果

idcard2=’’, 没有传输到后台api中

bug描述

严重的错误.

uni.uploadFile() 上传数据参数 formData 中传递的 JSON 对象中空值的字段,比如 idcard2='',这个 idcard2 字段名称和数据没有上传到我 api 后台


3 回复

四五年了一直存在这个问题,今天又遇到了。。。官方能不能给个回复


我的formData,微信小程序上一直发送不出去数据。…

在处理 uni-app 中的 uni.uploadFile() 方法时,如果遇到 formData 传输数据不完整的问题,这通常是由于数据格式或编码问题导致的。以下是一个示例代码,展示了如何正确使用 uni.uploadFile() 方法来上传包含 formData 的文件数据,并确保数据完整性。

首先,确保你的 uni-app 项目已经正确配置了文件上传的服务器地址和相关权限。

示例代码

// 假设你要上传一个文件和一些附加的表单数据
const filePath = 'path/to/your/file.jpg'; // 文件路径
const serverUrl = 'https://yourserver.com/upload'; // 服务器接收文件的URL

// 要上传的表单数据
const formData = {
    user: 'testUser',
    token: 'yourAuthToken',
    // 可以添加更多字段
};

// 将表单数据转换为URL编码的字符串
const formDataStr = Object.keys(formData)
    .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(formData[key]))
    .join('&');

// 调用uni.uploadFile方法
uni.uploadFile({
    url: serverUrl,
    filePath: filePath,
    name: 'file', // 文件对应的key,后端通过这个key获取文件
    formData: formDataStr, // 附加数据
    success: (uploadFileRes) => {
        console.log('上传成功:', uploadFileRes);
        // 处理上传成功后的逻辑
    },
    fail: (error) => {
        console.error('上传失败:', error);
        // 处理上传失败后的逻辑
    },
    complete: () => {
        // 上传完成的回调,无论成功或失败都会执行
    }
});

关键点说明

  1. filePath:这是你要上传的文件的本地路径。
  2. serverUrl:这是文件上传服务器的URL。
  3. formData:这是你要附加到文件上传请求中的表单数据。
  4. formDataStr:由于 uni.uploadFile() 方法的 formData 参数只接受URL编码的字符串,因此我们需要将JavaScript对象转换为这种格式。
  5. name:这是文件在上传请求中的字段名,后端通过这个字段名来接收文件。

注意事项

  • 确保文件路径正确,并且文件存在。
  • 确保服务器URL正确,并且服务器能够处理文件上传请求。
  • 检查后端是否对 formData 的字段名和值有特定的要求,比如字段名是否区分大小写,值是否需要特定的编码等。

通过上述方法,你应该能够解决 uni.uploadFile() 方法中 formData 传输数据不完整的问题。如果问题依旧存在,建议检查后端日志,看是否有关于接收到的数据的详细错误信息。

回到顶部