uni-app 使用uni.uploadFile上传文件至支付宝云,success无法返回filePath(本地路径),如何获取该信息

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

uni-app 使用uni.uploadFile上传文件至支付宝云,success无法返回filePath(本地路径),如何获取该信息

开发环境 版本号 项目创建方式
Windows WIN11 HBuilderX

示例代码:

【报Bug】使用uni.uploadFile上传文件时,如果是用的是支付宝云的话,success无法返回filePath(本地路径),请问如果想要在成功后获取该信息用什么可以获取到

操作步骤:

【报Bug】使用uni.uploadFile上传文件时,如果是用的是支付宝云的话,success无法返回filePath(本地路径),请问如果想要在成功后获取该信息用什么可以获取到

预期结果:

能返回到

实际结果:

不能

bug描述:

【报Bug】使用uni.uploadFile上传文件时,如果用的是支付宝云的话,success无法返回filePath(本地路径),请问如果想要在成功后获取到该信息用什么方法可以获取到


2 回复

推荐你用uniCloud.uploadFile,若想展示可以通过fileID去获取 https://doc.dcloud.net.cn/uniCloud/storage/dev.html#响应参数


在使用 uni-appuni.uploadFile 方法上传文件至支付宝云时,如果 success 回调中无法直接返回文件的本地路径 (filePath),这通常是因为 uni.uploadFile 的设计初衷是专注于文件的上传操作,而不是提供文件路径的回调。然而,你仍然可以在触发上传操作之前获取并保存这个路径,以便在上传成功后使用。

以下是一个示例代码,展示了如何在上传文件之前获取文件的本地路径,并在上传成功后使用该路径:

// 假设你有一个按钮触发文件选择
<button @click="chooseFile">选择文件并上传</button>

<script>
export default {
  data() {
    return {
      filePath: '' // 用于存储文件路径
    };
  },
  methods: {
    chooseFile() {
      uni.chooseImage({
        count: 1, // 只选择一个文件
        success: (res) => {
          // 获取到文件的本地路径
          this.filePath = res.tempFilePaths[0];
          // 调用上传函数
          this.uploadFile();
        },
        fail: (err) => {
          console.error('选择文件失败:', err);
        }
      });
    },
    uploadFile() {
      if (!this.filePath) {
        console.error('文件路径为空,请先选择文件');
        return;
      }

      uni.uploadFile({
        url: 'https://openapi.alipaydev.com/gateway.do', // 支付宝云的上传接口,根据实际情况替换
        filePath: this.filePath,
        name: 'file', // 文件对应的 key,服务器端通过这个 key 获取文件
        formData: {
          // 其他表单数据,如用户ID等
          userId: '123456'
        },
        success: (uploadRes) => {
          console.log('上传成功:', uploadRes);
          // 这里可以处理上传成功的逻辑,但无法直接获取到 filePath
          // 因为 filePath 已经在之前通过 chooseImage 获取并保存了
          // 你可以直接使用 this.filePath 来访问它
        },
        fail: (err) => {
          console.error('上传失败:', err);
        }
      });
    }
  }
};
</script>

在这个示例中,我们首先通过 uni.chooseImage 方法选择文件,并在成功回调中获取文件的本地路径 (filePath)。然后,我们调用 uni.uploadFile 方法上传文件,并在上传成功的回调中处理相关逻辑。虽然 uni.uploadFilesuccess 回调不能直接返回 filePath,但由于我们已经在选择文件时保存了这个路径,所以可以在上传成功后直接使用它。

回到顶部