uni-app 使用uni.uploadFile上传文件至支付宝云,success无法返回filePath(本地路径),如何获取该信息
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(本地路径),请问如果想要在成功后获取到该信息用什么方法可以获取到
推荐你用uniCloud.uploadFile,若想展示可以通过fileID去获取
https://doc.dcloud.net.cn/uniCloud/storage/dev.html#响应参数
在使用 uni-app
的 uni.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.uploadFile
的 success
回调不能直接返回 filePath
,但由于我们已经在选择文件时保存了这个路径,所以可以在上传成功后直接使用它。