最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

一、該功能應(yīng)用場景

前端向后端發(fā)送表單數(shù)據(jù)時,可能會同時發(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方法,為了關(guān)閉自動提交和將圖片轉(zhuǎn)換為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) {
    //將圖片轉(zhuǎn)換為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
      //此處需要和后端接收的參數(shù)名相同
      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 {
    //這兒將傳入的參數(shù)轉(zhuǎn)換為對應(yīng)的實體類
        ArticleVo articleVo=JSON.parseObject(form,ArticleVo.class);
        return SystemResult.success("上傳成功");
    }
}

實體類:

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

三、效果演示

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

實現(xiàn)效果

在傳入到后端后,可以自行根據(jù)需求將數(shù)據(jù)存入數(shù)據(jù)庫

四、問題總結(jié)

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

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

2.跨域問題

后端接口上添加注解@CrossOrigin

3.文件上傳的限制問題

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

4.不了解upload組件相關(guān)接口,導致功能無法實現(xiàn)

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

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

相關(guān)文章

  • Vue+Koa2+mongoose寫一個像素繪板的實現(xiàn)方法

    Vue+Koa2+mongoose寫一個像素繪板的實現(xiàn)方法

    這篇文章主要介紹了Vue+Koa2+mongoose寫一個像素繪板的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 利用vue + koa2 + mockjs模擬數(shù)據(jù)的方法教程

    利用vue + koa2 + mockjs模擬數(shù)據(jù)的方法教程

    這篇文章主要給大家介紹了關(guān)于利用vue + koa2 + mockjs模擬數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • 學習Vue組件實例

    學習Vue組件實例

    本篇文章給大家分享了Vue實例的相關(guān)內(nèi)容以及重要知識點,對此有興趣的朋友可以跟著學習參考下。
    2018-04-04
  • 解決vue-cli + webpack 新建項目出錯的問題

    解決vue-cli + webpack 新建項目出錯的問題

    下面小編就為大家分享一篇解決vue-cli + webpack 新建項目出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • JavaScript實現(xiàn)簡單的圖片切換功能(實例代碼)

    JavaScript實現(xiàn)簡單的圖片切換功能(實例代碼)

    這篇文章主要介紹了JavaScript實現(xiàn)簡單的圖片切換功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-04-04
  • vue 使用localstorage實現(xiàn)面包屑的操作

    vue 使用localstorage實現(xiàn)面包屑的操作

    這篇文章主要介紹了vue 使用localstorage實現(xiàn)面包屑的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 詳解vue引入子組件方法

    詳解vue引入子組件方法

    在本文中小編給大家分享的是關(guān)于vue引入子組件方法和先關(guān)注意點,有需要的朋友們可以學習下。
    2019-02-02
  • vue移動端路由切換實例分析

    vue移動端路由切換實例分析

    本篇文章給大家分享了vue移動端路由切換實例以及相關(guān)知識點,對此有興趣的朋友可以參考學習下。
    2018-05-05
  • Vue插件報錯:Vue.js is detected on this page.問題解決

    Vue插件報錯:Vue.js is detected on this page.問題解決

    這篇文章主要介紹了Vue插件報錯:Vue.js is detected on this page.問題解決,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • vue實現(xiàn)頁面加載動畫效果

    vue實現(xiàn)頁面加載動畫效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)頁面加載動畫效果,vue頁面出現(xiàn)正在加載的初始頁面與實現(xiàn)動畫效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論

清远市| 木兰县| 柯坪县| 永嘉县| 同仁县| 盐山县| 石景山区| 上林县| 灯塔市| 黑河市| 二连浩特市| 许昌县| 闸北区| 潞西市| 鄂托克旗| 洪洞县| 商水县| 花莲县| 丹寨县| 南京市| 山阴县| 鹿邑县| 郴州市| 牡丹江市| 云阳县| 永川市| 通山县| 蒙城县| 泗洪县| 南京市| 亚东县| 营山县| 稻城县| 南岸区| 扬州市| 土默特右旗| 射阳县| 防城港市| 澄迈县| 榕江县| 辉县市|