亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue+axios使用FormData方式向后端發(fā)送數據

 更新時間:2023年09月25日 10:17:12   作者:笑的像個child  
在前后端分離的項目中經常使用到Vue+axios通過FormData的方式向后端發(fā)送表單數據,下面就來介紹一下如何實現,感興趣的可以了解一下

前言

在前后端分離的項目中經常使用到Vue+axios通過FormData的方式向后端(Java)發(fā)送表單數據(文字+圖片),但是在初次寫這個功能時,可能會遇到很多問題,本文詳細的記錄了該功能的實現。

一、該功能應用場景

前端向后端發(fā)送表單數據時,可能會同時發(fā)送圖片和文本,這時會有一些需要注意的小細節(jié)。

二、代碼示例

1.前端(使用的ant-design-vue,element-ui同理)

代碼如下(示例):

<template>
  <a-form-model :model="form" :label-col="labelCol" :wrapper-col="wrapperCol">
    <a-form-model-item label="標題">
      <a-input v-model="form.title"/>
    </a-form-model-item>
    <a-form-model-item label="作者">
      <a-input v-model="form.author"/>
    </a-form-model-item>
    <a-form-model-item label="類型">
      <a-radio-group v-model="form.tag">
        <a-radio :style="radioStyle" :value="1">
          生活
        </a-radio>
        <a-radio :style="radioStyle" :value="2">
          學習
        </a-radio>
        <a-radio :style="radioStyle" :value="3">
          社會
        </a-radio>
      </a-radio-group>
    </a-form-model-item>
    <a-form-model-item label="圖片資源">
    //此處開啟了多選,并重寫了brforeUpload方法,為了關閉自動提交和將圖片轉換為base64編碼,同時聲明了文件列表的類型
      <a-upload
          :multiple="true"
          :before-upload="beforeUpload"
          name="file"
          list-type="picture"
      >
        <a-button>
          <a-icon type="upload"/>
          上傳推文圖片
        </a-button>
      </a-upload>
    </a-form-model-item>
    <a-form-model-item label="正文">
      <a-input v-model="form.content" type="textarea"/>
    </a-form-model-item>
    <a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
      <a-button type="primary" @click="onSubmit">
        提交
      </a-button>
    </a-form-model-item>
  </a-form-model>
</template>
<script>
import axios from "axios";
export default {
  data() {
    return {
      value: 1,
      radioStyle: {
        display: 'inline',
        height: '30px',
        lineHeight: '30px',
      },
      labelCol: {span: 4},
      wrapperCol: {span: 14},
      form: {
        title: '',
        author: '',
        tag: '',
        fileList: [],
        content: ''
      }
    };
  },
  methods: {
    beforeUpload(file, fileList) {
    //將圖片轉換為Base64編碼
      const reader = new FileReader()
      reader.readAsDataURL(file)
      reader.onload = () => {
        const base64 = reader.result;
        this.form.fileList.push(base64)
      };
      console.log(this.form.fileList)
       //禁止直接提交圖片
      return false;
    },
    //提交表單
    onSubmit() {
      let formData = new FormData
      //此處需要和后端接收的參數名相同
      formData.append("form", JSON.stringify(this.form))
      axios.post(
      	  //后端接口,自行修改
          " http://localhost:8081/manage/submit",
          formData,
          {
            headers: {'Content-Type': 'multipart/form-data'}
          }
      ).then(res => {
        console.log(res.data.message)
      })
    },
  },
};
</script>

該段代碼效果圖:

2.后端

代碼如下(示例):

@RestController
@Slf4j
@RequestMapping("/manage")
@CrossOrigin
public class ManageArticleController {
    @Resource
    ArticleService articleService;
    @PostMapping("/submit")
    public SystemResult<String> uploadImages(@RequestParam("form") String form)throws Exception {
    //這兒將傳入的參數轉換為對應的實體類
        ArticleVo articleVo=JSON.parseObject(form,ArticleVo.class);
        return SystemResult.success("上傳成功");
    }
}

實體類:

@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
//對應的實體類
public class ArticleVo implements Serializable {
    private String title;
    private String author;
    private int tag;
    private List<String> fileList;
    private String content;
}

三、效果演示

前端向后端發(fā)送數據,后端打印顯示

實現效果

在傳入到后端后,可以自行根據需求將數據存入數據庫

四、問題總結

1.前端發(fā)送的字段名和后端實體類的字段名不一致

將前端發(fā)送的數據名稱和后端修改一致

2.跨域問題

后端接口上添加注解@CrossOrigin

3.文件上傳的限制問題

在后端做相應的文件上傳配置,比如上傳大小,或者前端也做相應的驗證。

4.不了解upload組件相關接口,導致功能無法實現

前往官網查看對應組件的api,實在看不懂的話可以按照我的配置來寫。

到此這篇關于Vue+axios使用FormData方式向后端發(fā)送數據的文章就介紹到這了,更多相關Vue axios FormData后端發(fā)送內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 教你使用vue3寫Json-Preview的示例代碼

    教你使用vue3寫Json-Preview的示例代碼

    這篇文章主要介紹了用vue3寫了一個Json-Preview的相關知識,引入后直接<json-preview?v-model="jsonData"></json-preview>就可以使用了,本文通過示例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • vue如何添加jest測試

    vue如何添加jest測試

    這篇文章主要介紹了vue如何添加jest測試問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 詳解axios全局路由攔截的設置方法

    詳解axios全局路由攔截的設置方法

    這篇文章主要介紹了axios全局路由攔截的設置方法,axios全局路由代碼通常是在構建axios實例注入的,本文通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • Vue 路由 過渡動效 數據獲取方法

    Vue 路由 過渡動效 數據獲取方法

    這篇文章主要介紹了Vue 路由 過渡動效 數據獲取方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • nuxt框架中路由鑒權之Koa和Session的用法

    nuxt框架中路由鑒權之Koa和Session的用法

    后臺管理頁面需要有登錄系統,所以考慮做一下路由鑒權,這篇文章主要介紹了nuxt框架中路由鑒權之Koa和Session的用法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue中使用[provide/inject]實現頁面reload的方法

    vue中使用[provide/inject]實現頁面reload的方法

    這篇文章主要介紹了在vue中使用[provide/inject]實現頁面reload的方法,文中給大家提到了在vue中實現頁面刷新不同的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Vue.js學習筆記之 helloworld

    Vue.js學習筆記之 helloworld

    vue是法語中視圖的意思,Vue.js是一個輕巧、高性能、可組件化的MVVM庫,同時擁有非常容易上手的API。有需要的小伙伴可以參考下
    2016-08-08
  • Vue的方法和屬性案例詳解

    Vue的方法和屬性案例詳解

    這篇文章主要介紹了Vue的方法和屬性案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • vue中使用jwt-decode解析token的方法

    vue中使用jwt-decode解析token的方法

    這篇文章主要介紹了vue中使用jwt-decode解析token,文末給大家補充介紹了vue通過jwt-decode解析token獲取需要的數據,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Vue中子組件的顯示與隱藏方式

    Vue中子組件的顯示與隱藏方式

    這篇文章主要介紹了Vue中子組件的顯示與隱藏方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論