Laravel - AJAX 文件上传返回空值

cdmah0mi  于 2023-01-03  发布在  其他
关注(0)|答案(3)|浏览(138)

这是我的ajax请求:

var files = $('#imgur_attach')[0].files;

  if(files.length > 0){
    var fd = new FormData();
    
    // Append data 
    fd.append('file',files[0]);
    fd.append('_token',$globalToken);

    $.ajax({
        type: "POST",
        dataType: "json",
        contentType: false,
        processData: false,
        url: host + "/attach-comment-image/" ,
        data: {fd},

控制器:

public function attach(Request $request) {
    
    $this->validate($request, [
        'file' => 'image|required',
    ]);

当发送这个ajax请求时,验证器告诉我"file"字段是必需的,尝试返回request->get('file')返回null
但是,当我在ajax请求之前执行console.log(fd);时,它返回以下内容:

为什么会这样呢?我通常不会通过常规的POST请求上传AJAX文件,所以我不明白我错过了什么。

xxb16uws

xxb16uws1#

发送前尝试字符串化数据,如下所示:

$.ajax({
  ...
  data: {fd: JSON.stringify(fd),
  ...
xzv2uavs

xzv2uavs2#

您需要添加多部分表单数据

contentType: "multipart/form-data",
iecba09b

iecba09b3#

用一个form标记将输入内容 Package 起来,就像这样:

<form method="POST" enctype="multipart/form-data">

不知道为什么在 AJAX 请求中设置contentType: "multipart/form-data"不起作用,但是这个解决方案起作用了,所以我就用这个来代替。

相关问题