# `Laravel` 和 `Vue.js` 使用 `Axios` 通過(guò) `Put` 請(qǐng)求上傳文件 獲取不到 `Request` 數(shù)據(jù),通過(guò) post 傳遞 form 表單添加隱藏方法 `_method='put'` 解決(踩坑記錄)

LaravelVue.js 使用 Axios 通過(guò) Put 請(qǐng)求上傳文件 獲取不到 Request 數(shù)據(jù),通過(guò) post 傳遞 form 表單添加隱藏方法 _method='put' 解決(踩坑記錄)

說(shuō)明:上傳 Excel 文件做了兩天了,卡在了獲取上傳文件數(shù)據(jù)這里,采用了 Vue.js 作為前端技術(shù)棧,通過(guò) Axios 進(jìn)行接口數(shù)據(jù)請(qǐng)求,所以查到 Axios 官方提供了上傳文件示例

問(wèn)題出現(xiàn)

通過(guò)官方 put 方式提交數(shù)據(jù),獲取不到 Request 信息,直接 Log 中打印出來(lái)是空數(shù)組(后悔當(dāng)初沒(méi)使用 post)

下面為犯錯(cuò)步驟還原:

在 Vue 組件中采用 Axios 官方是上傳文件示例

在 Vue 組件中采用 Axios 官方是上傳文件示例.png

Laravel路由方式采用 put

Laravel路由方式采用 put.png

使用 chrome Dev Tools 查看 put 請(qǐng)求

使用 chrome Dev Tools 查看 put 請(qǐng)求.png

控制上傳方法,這里主要想在 laravel 日志中打印上傳的數(shù)據(jù),判斷服務(wù)器是否成功獲取上傳數(shù)據(jù)

判斷服務(wù)器是否成功獲取上傳數(shù)據(jù).png

Log 中并沒(méi)有數(shù)據(jù)

Log 中并沒(méi)有數(shù)據(jù).png

中間就是漫長(zhǎng)的 2B 試錯(cuò)之旅了

我開(kāi)始想的問(wèn)題是:

1.是不是 new formData()這個(gè)對(duì)象出了問(wèn)題,然后去查 官方文檔,最后發(fā)現(xiàn)這是 H5.js 中的也就是 javascript 原生的對(duì)象,不應(yīng)該出問(wèn)題。。。

2.之后又聯(lián)想到只傳遞普通鍵值對(duì) formdata 試試,發(fā)現(xiàn)仍然不能獲取到數(shù)據(jù):
只上傳鍵值對(duì)

只上傳鍵值對(duì).png

Log 依然沒(méi)有數(shù)據(jù)

Log 依然沒(méi)有數(shù)據(jù).png

3.沒(méi)辦法了,換成 post 上傳試試,結(jié)果發(fā)現(xiàn)有數(shù)據(jù)了。。。
修改為post 路由

修改為post 路由.png

Controller 方法修改顯示請(qǐng)求方式

Controller 方法修改顯示請(qǐng)求方式.png

Log 有數(shù)據(jù)

Log 有數(shù)據(jù).png

至此,試錯(cuò)完畢


問(wèn)題解決,想想就知道可能是 put 方法并沒(méi)有被 laravel 正確解讀,官方文檔中也有 form-method-spoofing 說(shuō)明,按部就班:

web.php 路由

web.php 路由.png

Controller 方法

Controller 方法.png

Vue 組件 Axios

Vue 組件 Axios.png

Log 有數(shù)據(jù)

Log 有數(shù)據(jù).png

至此,數(shù)據(jù)獲取成功。

總結(jié)

歸根結(jié)底是我沒(méi)有想到 axios其實(shí)也是 ajax 提交,需要 _method 隱藏方法提交,最關(guān)鍵的是我被 laravel 日志誤導(dǎo)了,當(dāng)我使用 put 方法直接提交的時(shí)候是可以出發(fā)控制器方法的(也就是可以打印出空數(shù)組),所以我會(huì)當(dāng)成其實(shí)請(qǐng)求發(fā)送成功并且成功提交的控制器方法中。。。。。。。。。。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 原文鏈接 必備品 文檔:Documentation API:API Reference 視頻:Laracasts ...
    layjoy閱讀 8,716評(píng)論 0 121
  • 醫(yī)院,再也不見(jiàn)! 寒風(fēng)瑟瑟的天氣,關(guān)節(jié)又在隱隱作痛,辦公室里的咳嗽聲也此起彼伏。怎樣保養(yǎng)才能緩解不適,遠(yuǎn)離醫(yī)院?讓...
    納谷nakko閱讀 2,703評(píng)論 10 45
  • 今年我24生活在二三先線城市,前23年過(guò)得也還算平淡,輾轉(zhuǎn)努力打拼進(jìn)了一家醫(yī)院當(dāng)護(hù)士,那年20歲。我不知道我以后還...
    以西小卒閱讀 285評(píng)論 1 0
  • 昨天的我一整天都有些精神恍惚,因?yàn)樯虾y程親子園的事件。說(shuō)實(shí)話,我根本不敢點(diǎn)開(kāi)視頻,只看了幾張圖片和描述...
    瞳小甜Rosie閱讀 317評(píng)論 0 0

友情鏈接更多精彩內(nèi)容