Laravel我尝试上传大文件时连接重置错误

时间:2019-05-16 06:23:42

标签: laravel

经过几天的追踪,为什么我在Laravel上创建上传表单时遇到The connection was reset错误,我认为问题出在服务器上,我更改了apache2的更多选项,但没有任何改变。

我使用下面的实现创建了用于上传文件的简单PHP,那就行了!!现在我在Laravel实现的上传表单上遇到什么问题,我收到此错误或timeout

请记住:上传小型文件没有任何问题

Laravel实现:

表格:

<form action="{{route('lessons.store')}}" method="POST" enctype="multipart/form-data">
    {{ csrf_field() }}
    <div class="form-group">
        <div class="form-group">

        <div class="form-group">
            <label class="display-block">please choose file</label>
            <div class="media no-margin-top">
                <div class="media-body">
                    <input type="file" class="file-styled" name="file"
                           value="{{old('file')}}">
                </div>
            </div>
        </div>

        <div class="text-right">
             <button type="submit" class="btn btn-primary">Upload FILE
                    <i class="icon-arrow-left13 position-right"></i></button>
        </div>
</form>

控制器:

public function store(RequestContents $request)
{
    ini_set('memory_limit', '256M');
    $uploadedFile = $request->file('file');

    dd($uploadedFile);
}

路线:

Route::group(['namespace' => 'Dashboard', 'middleware' => ['auth:web'], 'prefix' => 'panel'], function () {
    ...
    $this->resource('lessons', 'LessonsController');
    ...
});

2 个答案:

答案 0 :(得分:1)

对于将非常大的文件上传到服务器会导致许多问题,例如在上传网络状况时占用服务器资源。上传大文件(大小超过30 GB)时,我遇到了类似的问题。

我使用了这种方法,

在前端 我使用Dropzone.js Resumable.js非常有前途。与其直接将整个文件上传到服务器,不如将其上传到一小块(10 MB)并管理文件部分和其他内容。

在您的后端Laravel中,我们使用了pionl/laravel-chunk-upload,它与上述两个上传器兼容。它将为您管理文件块,最后块和针迹的各种管理。

使用此组合将为您处理各种大文件,库中还有其他参数可供您使用,例如块大小以及是否使用可恢复文件上传。

编辑

如果您使用的是S3或任何其他对象存储服务,请尝试直接上载到它们,这样可以节省您的费用。

如果您需要任何其他帮助,请随时询问。

答案 1 :(得分:0)

从表单中删除enctype =“ multipart / form-data”属性后,请重试。