在Vue.js中,使用FormData上传文件时,可能会遇到formData为空的问题。这是因为在代码中,对于formData的操作是在Promise.all的回调函数中进行的,而Promise.all是一个异步操作,需要等待所有的Promise完成后才会执行回调函数。所以在console.log(formData)的时候,Promise.all的回调函数还没有执行,formData还没有被填充。

如果想要查看formData的内容,需要将console.log(formData)放到Promise.all的回调函数中。

const fileList = reactive([
    {
        'name': 'food.jpeg',
        'url': 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
    },

    {
        'name': 'food.jpeg',
        'url': 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
    },

    {
        'name': 'food.jpeg',
        'url': 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
    },

    {
        'name': 'food.jpeg',
        'url': 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100',
    },

])
const formData = new FormData();
const promises = fileList.map(item =>
    fetch(item.url)
        .then(response => response.blob())
        .then(blob => new File([blob], 'image.jpg'))
);

Promise.all(promises).then(files => {
    files.forEach(file => {
        formData.append('file', file);
    });
    console.log(formData); // 将console.log(formData)放到Promise.all的回调函数中
});
console.log(fileList);
const res = await proxy.Api.uploadPhoto(formData); // 这里为什么formdata打印出来为空

通过将console.log(formData)放到Promise.all的回调函数中,就可以在formData被填充后查看其内容了。

解决Vue.js中formData为空的问题:异步操作导致数据未填充

原文地址: https://www.cveoy.top/t/topic/ntBP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录