You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法更新formData:上传图片存入formData后显示为空

问题:FormData追加图片后打印为空,但file状态存在文件

我想把上传的图片发送到后端,但是将图片追加到FormData后,打印FormData显示为空。不过打印file状态时,能看到确实存在图片文件。

代码

function UpdateProfile() {
    const [file, setFile]: any = useState(null);
    const handleSubmit = () => {
        const formData = new FormData();
        console.log(file);
        formData.append("profile", "file");
        console.log("formData", formData);
    };

    return (
        <>
            <Modal>
                    <ModalBody pb={6}>
                        <FormControl>
                            <FormLabel>Profile Picture</FormLabel>
                            <Input
                                name="profile"
                                type="file"
                                onChange={(e: any) => setFile(e.target.files[0])}
                            />
                        </FormControl>
                    </ModalBody>
            </Modal>
        </>
    );
}

打印结果

console.log(file)的输出:

File {name: 'burger 2.png', lastModified: 1658142356471, lastModifiedDate: Mon Jul 18 2022 16:35:56 GMT+0530 (India Standard Time), webkitRelativePath: '', size: 156243, …}

打印FormData时显示:formData {},为空状态。

解决方法

1. 修正FormData追加的参数

你当前代码里的formData.append("profile", "file");是错误的——第二个参数是字符串"file",而非状态中存储的file文件对象。正确写法是:

formData.append("profile", file);

2. 正确查看FormData内容

浏览器直接console.log(formData)无法显示内部内容,因为FormData是不可枚举的对象。你可以通过以下方式查看:

  • 获取单个项:console.log("文件:", formData.get("profile"))
  • 遍历所有项:
for (let [key, value] of formData.entries()) {
  console.log(key, value);
}

修正后的完整代码

function UpdateProfile() {
    const [file, setFile]: any = useState(null);
    const handleSubmit = () => {
        const formData = new FormData();
        console.log(file);
        // 正确追加文件对象
        formData.append("profile", file);
        // 正确查看FormData内容
        console.log("FormData中的文件:", formData.get("profile"));
        for (let [key, value] of formData.entries()) {
            console.log(key, value);
        }
    };

    return (
        <>
            <Modal>
                    <ModalBody pb={6}>
                        <FormControl>
                            <FormLabel>Profile Picture</FormLabel>
                            <Input
                                name="profile"
                                type="file"
                                onChange={(e: any) => setFile(e.target.files[0])}
                            />
                        </FormControl>
                    </ModalBody>
            </Modal>
        </>
    );
}

内容的提问来源于stack exchange,提问作者Sai Krishnadas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:15:36