Laravel 5.8多上传输入

时间:2019-07-10 10:25:32

标签: php laravel file-upload

我希望能够上传多个(动态)文件(pdf)。

所以我有以下布局:

https://i.imgur.com/TLk3dvv.png

如您所见,该表单有4个用于文件的输入字段,但它也有2个文本字段,并且对于每个文件上载行,都有一个复选框。 “流”如下:

  1. 添加标题和年份
  2. 检查要启用的课程(初始,娱乐,Toersime和Sport)(并上传PDF)
  3. 每个课程上载1个PDF文件。

文件是PDF文件(每个类1个)。我在PHP中尝试了以下代码来上传文件,但是一次只能上传一个文件,有时一次只能上传2个文件,具体取决于文件的大小。

public function postGapersritAddResults(Request $request): RedirectResponse
{
    // Handle upload
    $path = 'documents/gapersrit/'.$request->get('year').'/results';

    foreach (['initiatie', 'recreatie', 'toerisme', 'sport'] as $item) {
        if ($request->hasFile('file_'.$item)) {
            $request->file('file_'.$item)->storeAs($path, $item.'.'.$request->file('file_'.$item)->getClientOriginalExtension(), 'webdav');
        }
    }

    // Handle database
    $result = new SiteGapersritResults();
    $result->title = $request->get('title');
    $result->year = $request->get('year');
    $result->initiatie =  filter_var($request->get('active_initiatie'), FILTER_VALIDATE_BOOLEAN);
    $result->recreatie =  filter_var($request->get('active_recreatie'), FILTER_VALIDATE_BOOLEAN);
    $result->toerisme =  filter_var($request->get('active_toerisme'), FILTER_VALIDATE_BOOLEAN);
    $result->sport =  filter_var($request->get('active_sport'), FILTER_VALIDATE_BOOLEAN);
    $result->save();

    toastr()->success('Saved the results for year '.$result->year.'.', 'Success', ['timeOut' => 5000]);
    return redirect()->to('admin/gapersrit/results');
}

如果有人对我该怎么做有更好的主意,请帮助我。 理想情况下,我想选择所有文件并能够一个接一个地上传它们(就像在我的代码中一样),但是由于某些原因,这是行不通的,并且在大多数情况下会引发太大的错误,但是,我猜我一次要上传一个文件吗?

修改 在php.ini和我的Nginx配置中,上传大小的上限为100M。

编辑2 我在当前代码中收到以下错误:

curl_exec(): CURLOPT_INFILE resource has gone away, resetting to default

完整跟踪:https://pastebin.com/rqUeEhGa

2 个答案:

答案 0 :(得分:0)

这可能是因为上传大小受到服务器php.ini配置的限制。

如果您有权访问文件或php设置,请尝试更改以下值:

upload_max_filesize = 20M
post_max_size = 20M

编辑,另请参见https://stackoverflow.com/a/23686617/7584725

答案 1 :(得分:0)

如您所说,错误为borecast-production

您发布的代码段不包含与git config --global fetch.prune true相关的任何内容,问题是curl_exec(): CURLOPT_INFILE resource has gone away, resetting to default函数中的“ webdav”磁盘。

看看踪迹,似乎curl包中有问题

https://github.com/thephpleague/flysystem-webdav/issues/49
https://github.com/thephpleague/flysystem-webdav/issues/50