uni-app中uni.uploadFile参数无法传递到接口

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

uni-app中uni.uploadFile参数无法传递到接口

通过图片中的代码往接口传图片时,接口能进去,但参数拿不到,提示参数不能为空,这是什么原因?之前还好好的在用,突然就全部用不了了,后端也没改。

图片

2024-09-30 08:32

1 回复

uni-app 中使用 uni.uploadFile 方法上传文件时,如果参数无法传递到接口,通常是因为参数传递方式或格式不正确。下面是一个正确的使用 uni.uploadFile 的示例,同时确保参数能够正确传递到后端接口。

首先,确保你已经安装了必要的依赖,并且你的后端接口能够接收文件上传以及附加参数。

以下是一个完整的示例代码,展示如何使用 uni.uploadFile 并传递参数:

// 假设你有一个文件路径 filePath 和一些需要传递的参数 params
const filePath = '/path/to/your/file'; // 替换为你的文件路径
const params = {
  userId: '12345',
  fileName: 'example.jpg',
  fileType: 'image/jpeg'
};

// 将参数转换为查询字符串格式
const queryString = Object.keys(params)
  .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
  .join('&');

// 假设你的后端接口 URL 为 'https://example.com/upload'
const uploadUrl = `https://example.com/upload?${queryString}`;

uni.uploadFile({
  url: uploadUrl, // 包含查询参数的 URL
  filePath: filePath,
  name: 'file', // 后端接收文件的字段名,需与后端接口对应
  formData: {}, // 如果需要传递额外的 formData,可以在这里添加,但查询参数通常已足够
  success: (uploadFileRes) => {
    console.log('上传成功:', uploadFileRes);
    // 这里可以处理上传成功的逻辑,比如解析返回的数据
    const data = JSON.parse(uploadFileRes.data);
    if (data.success) {
      uni.showToast({
        title: '上传成功',
        icon: 'success'
      });
    } else {
      uni.showToast({
        title: '上传失败:' + data.message,
        icon: 'none'
      });
    }
  },
  fail: (err) => {
    console.error('上传失败:', err);
    uni.showToast({
      title: '上传失败,请重试',
      icon: 'none'
    });
  }
});

在这个示例中,我们通过将参数转换为查询字符串并附加到 URL 的方式来传递参数。这种方式简单且常用,适用于大多数后端接口。如果你的后端接口要求通过 formData 传递参数,你可以在 formData 对象中添加这些参数,但请注意,文件通常还是通过 name 字段传递。

确保你的后端接口能够正确解析查询参数或 formData,并且文件字段名与你在 uni.uploadFile 中指定的 name 一致。如果问题仍然存在,请检查后端接口的日志,以确定参数是否成功接收以及是否有其他错误导致参数传递失败。

回到顶部