iT邦幫忙

2

Vue axios 串接API格式如何轉成form-data?

各位好,小弟目前使用axios串接API,由於API要接收的是form-data格式,也有用new formdata()去做,但都還是不行,想請問是哪出錯了?

methods方法
https://ithelp.ithome.com.tw/upload/images/20191009/20109533bfbMqC0rn8.jpg

回傳結果
https://ithelp.ithome.com.tw/upload/images/20191009/201095331pI274CFyZ.jpg

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

2
dragonH
iT邦超人 5 級 ‧ 2019-10-09 13:14:48
最佳解答

codepen

直接 post formData object 就好

你的

var = postdata = postforms.getAll("User")

估計會讓 header 又變回 json

另外

formdata 的 key 是不能重複的

應該是說重複的結果

可能不會是你想要的


補充一下

如果要用 axios post

x-www-form-urlencoded

的資料的話

則需要用到 qs 這個 lib

看更多先前的回應...收起先前的回應...
silence iT邦新手 4 級 ‧ 2019-10-09 14:03:08 檢舉

感謝大大解答,確實直接傳就好了!

dragonH iT邦超人 5 級 ‧ 2019-10-09 14:11:28 檢舉

/images/emoticon/emoticon42.gif

甲土豆 iT邦新手 5 級 ‧ 2019-10-09 14:23:56 檢舉

終於等到 H大神解答

dragonH iT邦超人 5 級 ‧ 2019-10-09 14:32:27 檢舉

用過 axios 的應該都會知道要這樣用

不算什麼神解答XD /images/emoticon/emoticon21.gif

0
小魚
iT邦大師 1 級 ‧ 2019-10-09 12:44:17

應該是傳 postforms 就可以

axios.post(url, postforms, config)

但是你postforms為什麼append了兩個User
應該是要

postforms.append('UserId', this.UserId);

才對吧,
這樣子接收到的就跟表單的 name='UserId' 接收到的是一樣的,
而且我沒看到你傳圖片,
應該是不需要用到 multipart/form-data

看更多先前的回應...收起先前的回應...
silence iT邦新手 4 級 ‧ 2019-10-09 13:19:07 檢舉

大大好,會有兩個User是因為要傳兩個參數給API,我補上程式碼https://ithelp.ithome.com.tw/upload/images/20191009/20109533UpJV2KTDvl.jpg

所以才會寫兩個,在宣告一個postdata去接收

小魚 iT邦大師 1 級 ‧ 2019-10-09 13:29:20 檢舉

無法理解為什麼要這樣做,
你先跟後端討論需求吧.

silence iT邦新手 4 級 ‧ 2019-10-09 13:39:10 檢舉

會有兩個是因為一個是帳號,一個是密碼

小魚 iT邦大師 1 級 ‧ 2019-10-09 13:42:26 檢舉

有API文件嗎?
只要這個API就好.

silence iT邦新手 4 級 ‧ 2019-10-09 14:02:31 檢舉

後來參考其他大大的回答,目前已經解決,直接postforms就可以了,謝謝大大熱心的幫忙!

小魚 iT邦大師 1 級 ‧ 2019-10-09 14:04:48 檢舉

這樣寫API的還真有趣...

我要發表回答

立即登入回答