在 laravel 中使用 ajax 提交包含文件上传的多个表单时出现空错误

I get an empty error when submitting multiple forms with file uploads with ajax in laravel

我的问题是在 laravel 中使用 ajax 发布多个表单时,我发送表单数据没有任何问题,但我无法发送文件。 文件为空错误。我已经处理了2天了,没有我没有尝试过的方法,请帮助我。 除此之外,我在表单中添加了 multipart,但仍然没有用,我正在与您分享我的代码。

抱歉我的英语不好。

我希望它以正常的第 4 种形式上传 2 张照片,直到 createProduct3 形式,我试图通过执行正常的 new formData() 来获取它们,但我尝试了其他方式,但我无法成功。 它将它作为 [Object 文件] 发送到 Laravel 服务器端。 我的表格

<form class="form" id="createProduct4" method="POST" action="">
<input type="file" class="upload-box-title" id="urun-fotografi" name="urun_fotografi" value="Fotoğraf Seç">
<input type="file" class="upload-box-title" id="urun-dosyasi" name="urun_dosyasi" value="Dosya Seç">
</form>

我的 blade ajax:

function createProducts()
{
    var dataString = $("#createProduct1, #createProduct2, #createProduct3, #createProduct4").serialize();
    let photo = document.getElementById("urun-dosyasi").files[0];
    let photo2 = document.getElementById("urun-fotografi").files[0];
    console.log(photo,photo2);

    $.ajax({
        url: "{{ route('user.product.create') }}",
        type: "POST",
        data: dataString+"&urun_dosyasi="+photo+"&urun_fotografi="+photo2,
        success: function( data ) {

        },
        error: function(xhr)
        {
            console.log(xhr);
        }
    });
}

服务器功能

 public function createProduct(Request $request)
{
    $file = $request->file('urun_dosyasi');
    $file2 = $request->file('urun_fotografi');
    $filename = $file->getClientOriginalName();
    $extension = $file->getClientOriginalExtension();
    $filename2 = $file2->getClientOriginalName();
    $extension2 = $file2->getClientOriginalExtension();

    echo $filename,$extension."2. doc: ".$filename2.$extension;
}

当您的表单包含任何 <input type="file"> 元素时使用 multipart/form-data :

<form ... enctype="multipart/form-data">

Ajax :

var form = $('#createProduct4')[0];
var data = new FormData(form);

$.ajax({
    url: "{{ route('user.product.create') }}",
    type: "POST",
    enctype: 'multipart/form-data',
    data: data,
    processData: false,
    contentType: false,
    success: function (data) {
        console.log("SUCCESS : ", data);
    },
    error: function (e) {
        console.log("ERROR : ", e);
    }
});