javascript - 如何使用 fetch API 发布多个文件?

标签 javascript laravel fetch form-data filelist

我尝试使用 fetch API 从输入发布多个文件,但附加后表单数据仍为空

我查看了答案 here , here , here , herehere并尝试了所有方法均无效

我使用 Laravel 框架作为后端,这是我的 Blade View 文件

<meta name="csrf-token" content="{{ csrf_token() }}">
<input class="form-control" type="file" id="pro-image" name="image[]" multiple onchange="submit()">

<script>
    function submit() {
        var ins = document.getElementById('pro-image').files.length;
        var fd = new FormData();
        for (var x = 0; x < ins; x++) {
            fd.append("pro-image[]", document.getElementById('pro-image').files[x]);
        }
        console.log(fd);
        fetch('/', {
            headers: {
                "Content-Type": "application/json",
                "Accept": "application/json",
                "X-Requested-With": "XMLHttpRequest",
                "X-CSRF-Token": document.querySelector('meta[name="csrf-token"]').content
            },
            method: 'POST',
            credentials: "same-origin",
            body: fd,
        });
    }
</script>

控制台记录一个空表单数据对象

enter image description here

这是后端的代码

Route::post('/', function () {
    dd(request()->all());
});

因此我得到一个空数组

enter image description here

真的不知道为什么这不起作用!知道做错了什么吗?

最佳答案

删除 Content-Type: application/json header ,或将其设置为 multipart/form-data

关于javascript - 如何使用 fetch API 发布多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401449/

相关文章:

javascript - 正则表达式匹配包含点的字符串

javascript - jQuery 从中心展开元素不起作用

javascript - 由于 promise 而在状态更改之前发生更新?

ios - 通过外键 (API) 保存/检索数据

javascript - 将输入值应用于其所有 td innerhtml

php - 如何在 laravel 测试中获取 header 值

laravel - Fresh Homestead 无法在 Windows 上运行( Composer 重命名权限被拒绝错误)

javascript - 使用 marionette 添加主干提取的集合结果

javascript - “NoneType”对象不支持项目分配 - Zapier - Javascript

ajax - 在 React : How do I Map through JSON array of objects, setState() 中获取请求并追加?