【问题标题】:How to Send formData through Axios in Vue JS and Node JS?Vue JS和Node JS中如何通过axios发送formData?
【发布时间】:2019-07-10 00:42:13
【问题描述】:

Api.Js --> 这是 Api 的连接器(Node Js)

import axios from 'axios'

export default () => {
    return axios.create({
        baseURL: "http://localhost:4040",
        credentials: true
        //WithCredential: true
        //WithCredentials : true
    })
}

PageService.js

import Api from "@/services/Api";

export default{
    threadSubmit(params) {
        return Api().post("page/threadSubmit", params);
    },
    // threadSubmit(params) {
    //     return Api().post("page/threadSubmit", params, {
    //         headers: {
    //             'Content-Type': 'multipart/form-data'
    //         }
    //     });
    // }
}

页面.vue

<script>
   import PageService from "@/services/PageService";
   export default{
      methods:{
         async feedFinalSubmit(){
            const formData = new FormData();
            formData.append("files", this.file);
            formData.append("description", this.thread.description);
            formData.append("pageID", this.$route.params.id);

            const response = await PageService.threadSubmit({
               pageID: this.$route.params.id,
               description: this.thread.description,
               files: formData
            });
            if (response.data.success){
               //do somethnig
            }
         }
      }
   }
</script>

问题是,在每个请求中#FormData 发送空结果。 我应该怎么做才能使用该 Api.js 文件发送多部分表单数据? 提前谢谢你。

【问题讨论】:

    标签: node.js vue.js axios


    【解决方案1】:

    试试这个代码。

    import axios from 'axios'
    
    export default () => {
        return axios.create({
            baseURL: "http://localhost:4040",
            credentials: true,
            headers :{
               'Content-Type': undefined
            }
            //WithCredential: true
            //WithCredentials : true
        })
    }
    
    
     async feedFinalSubmit(){
                const formData = new FormData();
                formData.append("files", this.file);
                formData.append("description", this.thread.description);
                formData.append("pageID", this.$route.params.id);
    
                const dict = {};
                dict['pageID']=this.$route.params.id;
                dict['description']=this.thread.description;
    
                const blob = new Blob([dict], {
                            type: 'application/json'
                            });
                formData.append("JsonData", blob); 
                const response = await PageService.threadSubmit(formData);
                if (response.data.success){
                   //do somethnig
                }
             }
    

    【讨论】:

    • 由于 headers:{'Content-Type': 'multipart/form-data'} 我的其他输入对象也没有提交。
    • 另一种方式是用FormData发送json数据。 const blob = new Blob([json], { type: 'application/json' });常量数据 = 新的 FormData(); data.append("文档", blob);然后只需在您的方法中传递数据。
    猜你喜欢
    • 2020-10-16
    • 2013-06-14
    • 2017-10-19
    • 1970-01-01
    • 2019-04-26
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    相关资源
    最近更新 更多