Javascript 使用axios发送文件,不使用FormData api

Javascript 使用axios发送文件,不使用FormData api,javascript,ajax,axios,multipartform-data,Javascript,Ajax,Axios,Multipartform Data,我可以使用axios和FormData api将文件发送到服务器,如下所示: persist(avatar){ let data = new FormData(); data.append('avatar', avatar); axios.post(`/api/users/${this.user.name}/avatar`, data) .then(() => flash('Avatar uploaded!')

我可以使用axios和FormData api将文件发送到服务器,如下所示:

    persist(avatar){
        let data = new FormData();
        data.append('avatar', avatar);
        axios.post(`/api/users/${this.user.name}/avatar`, data)
            .then(() => flash('Avatar uploaded!'));
    }
传递给persist()的avatar参数是来自类型为“file”的表单输入的文件对象

然后我可以在服务器端抓取文件

不使用FormData是否可以执行此操作?也就是说,模拟FormData工作?基本上,我试图理解FormData api所做的额外工作。也许使用axios是不可能的,我应该使用普通的XMLHttpRequest

当然,简单地发送文件对象是行不通的:

axios.post(`/api/users/${this.user.name}/avatar`, {avatar: avatar})

在服务器端,化身对象将是空的。我可以发送像avatar.name这样的元数据,但不能发送整个对象。

是的,可以在客户端手动进行编码。如果您真的想了解表单工作的每一个细节,那么自己编写表单数据编码器可能会很有用。但是,对于大多数应用程序,我不推荐它。应在生产中使用
FormData
API

您需要参考以了解如何实现编码器

本规范定义了多部分/表单数据媒体类型,可由多种应用程序使用,并通过多种协议传输,作为用户填写表单时返回一组值的方式

更多资源:


我发布了一个大的嵌套json负载,其中一个是文件。这意味着我需要为每个字段手动编写和创建表单数据对象?不,您很可能只需要一个
FormData
实例。然后,您需要使用
formData.append()
方法决定将哪些字段放入该对象中。我建议为文件设置一个字段,为JSON设置第二个字段,我假设这是文件的元数据。