请教 Ajax 请求 put 方法传递 FormData?

使用put方法传递formdata,在laravel后台接收不到正常的数据。
jq代码:
851.pngfile
带有文件上传的form表单
后台代码1:
file
结果:
file
后台代码2:
file
结果:
file
如何解决啊!感谢各路大牛的帮助,小弟感激不尽!

Herbie
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

在github的一个issue中查了下
需要用post请求然后再_method中设置成put就可以在相应路由中拿到文件了

file

file

5年前 评论
讨论数量: 13

在github的一个issue中查了下
需要用post请求然后再_method中设置成put就可以在相应路由中拿到文件了

file

file

5年前 评论

PHP不能识别的Content-Type类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA。
php://input数据总是跟$HTTP_RAW_POST_DATA相同,但是php://input比$HTTP_RAW_POST_DATA更凑效,且不需要特殊设置php.ini。

5年前 评论
DianWang

试试用postman测试下PUT请求,一步步排除

5年前 评论
Herbie

@class_li 感谢您的回答,那么我怎样做才能获得自己想要的数据呢?

5年前 评论

@Herbie 把你的头信息调整一下就可以了

5年前 评论
Herbie

@class_li 您好,我将请求头更为“application/json”并没有起到效果,也更改为urlencode过。结果都是一样的!请教。。。

5年前 评论
Sparkfly

使用 chrome 调试工具,打印请求体看一下

5年前 评论
ruke

参数在 php://input 里面的

$.ajax({
    url: 'http://my.com/test/test',
    contentType:"application/json",
    type: 'put',
    data: {'a':100000, _method: 'put'},
    dataType: 'json',
    success: function (data) {
        console.log(data)
    }
})

php

public function putTest(Request $request)
{
    return success(file_get_contents('php://input'));
}

file

5年前 评论
ruke

正好帮我找了个bug,自己写Request, php://input 里面的参数有可能是json字符串,有可能是 str,使用ajax 发送的这种是一str形式存在的

file

5年前 评论

在github的一个issue中查了下
需要用post请求然后再_method中设置成put就可以在相应路由中拿到文件了

file

file

5年前 评论

请问大佬解决这个问题了吗?同遇抓狂!!

5年前 评论
Herbie

@Horizon ajax的type改成POST,然后在form表单中伪造PUT方法。

5年前 评论

laravel 的put是伪put, ajax 使用post方法 加个参数_method值为put

5年前 评论

@yyss8 感谢大佬,我也遇到一样的问题,用你的办法解决了

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!