Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel如何在两个表中进行多文件上传和存储数据_Php_Jquery_Ajax_Laravel_Axios - Fatal编程技术网

Php Laravel如何在两个表中进行多文件上传和存储数据

Php Laravel如何在两个表中进行多文件上传和存储数据,php,jquery,ajax,laravel,axios,Php,Jquery,Ajax,Laravel,Axios,我有一个,可以上传多个文件。多个文件应存储在不同的表中,但由于某些原因,这些文件未存储在数据库中 表格如下: <form method="POST" action="{{ route('application.store') }}" id="form" enctype="multipart/form-data"> <input name="name" type="text" /> <input name="email" type="text" />

我有一个
,可以上传多个文件。多个文件应存储在不同的表中,但由于某些原因,这些文件未存储在
数据库中

表格如下:

<form method="POST" action="{{ route('application.store') }}" id="form" enctype="multipart/form-data">
   <input name="name" type="text" />
   <input name="email" type="text" />
   <input name="phone" type="text" />
   <input name="additional_files" type="file" multiple />
</form>
我的文件模型如下所示:

class SingleApplicationFile extends Model {
    protected $table = "additional_files";

    protected $fillable = [
        'attachment', 'files_id', 'attachment_name', 
        'attachment_size', 'application_id'
    ];

    public function files()
    {
       return $this->belongsTo('App\Application');
    }
}
然后用JS发布:

var additional_files = [];

$("#form input[name='additional_files']").change(
    function() {
        additional_files = [];
        for (var i = 0; i < $(this)[0].files.length; i++) {
            additional_files.push($(this)[0].files[i]);
        }
    }
);

$('#form button[type="submit"]').click(function(e) {
    e.preventDefault();

    var formData = new FormData();

    formData.append(
        "name",
        $("#form")
            .find('input[name="name"]')
            .val()
    );
    formData.append(
        "email",
        $("#form")
            .find('input[name="email"]')
            .val()
    );

    formData.append(
        "phone",
        $("#form")
            .find('input[name="phone"]')
            .val()
    );

    if (additional_files.length > 0) {
        formData.append("additional_files", additional_files);
    }

        axios
            .post($("#form").attr("action"), formData)
            .then(response => {
              // some success message
              }
            })
            .catch(error => {
                console.log("ERR: ", error);
            });

 });

我不知道我做错了什么。我试图在输入上添加
附加的\u文件[]
,>
,但没有成功


有人能帮我吗?

您无法从查看页面发送多个文件。 您应该在输入类型中使用
[]
此选项

<input name="additional_files[]" type="file" multiple />

在此之后,只有文件将作为数组上载。然后可以遍历数组,然后可以执行其他操作。
如果您遇到任何问题,请告诉我。

您无法从查看页面发送多个文件。 您应该在输入类型中使用
[]
此选项

<input name="additional_files[]" type="file" multiple />

在此之后,只有文件将作为数组上载。然后可以遍历数组,然后可以执行其他操作。
如果您遇到任何问题,请告诉我。

可能重复的可能重复的我尝试添加
其他\u文件[]
,但运气不佳:-/no,我没有收到任何错误。。。我怀疑
hasFile
foreach
-loop有问题。您是否尝试在
foreach
函数中添加
$request->file('additional_files)
,而不将其转换为变量?试试看,让我知道我试着做了
dd(request()->file('additional_files'))
并且它返回
null
即使当我试图在你的js文件中上传文件时,添加相同的方法:
if(additional_files[].length>0){formData.append(“additional_files[]”,additional_files[])}
我试图添加
附加的\u文件[]
但是运气不好:-/no,我没有收到任何错误。。。我怀疑
hasFile
foreach
-loop有问题。您是否尝试在
foreach
函数中添加
$request->file('additional_files)
,而不将其转换为变量?试试看,让我知道我试着做了
dd(request()->file('additional_files'))
并且它返回
null
即使当我试着在你的js文件中上传文件时,添加相同的方法:
if(additional_files[].length>0){formData.append(“additional_files[]”,additional_files[])}
<input name="additional_files[]" type="file" multiple />