Laravel不接受请求中的文件

时间:2017-07-12 03:37:55

标签: laravel laravel-5 laravel-5.4

我正在尝试上传一个简单的HTML文件。

<form accept-charset="utf-8" name="gallery" method="POST" action="/gallery">
    <input type="hidden" name="_token" value="fQ7arteCHmBFVfvQARWxxK3dXNgUJF40FdsaD3R">
    <label class="btn btn-default">
        Browse <input type="file" name="gallery[]" hidden multiple>
    </label>
</form>

我已经用Xdebug跟踪了它,我可以看到$request->gallery显示了一个文件名数组,但文件数仍为零:

if (!$request->files->count()) {
    return redirect()->back()->with('error', 'Empty file list.');
}

PHP全局变量$_FILES也是空的。

使用Dropzone.js之类的东西通过AJAX提交时效果很好,但是当我使用标准的HTML5表单元素进行提交时,它无法正常工作。

感觉我在这里错过了一些明显的东西。

3 个答案:

答案 0 :(得分:1)

 Route::get('search',BlahblahController@search);

您在表单中遗漏了<form accept-charset="utf-8" enctype="multipart/form-data" name="gallery" method="POST" action="/gallery"> <input type="hidden" name="_token" value="fQ7arteCHmBFVfvQARWxxK3dXNgUJF40FdsaD3R"> <label class="btn btn-default"> Browse <input type="file" name="gallery[]" hidden multiple> </label>

答案 1 :(得分:0)

像其他人说的那样,不要忘记CSRF。 (默认值:开)

<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

答案 2 :(得分:0)

您必须检查以下请求:

if($request->hasFile('file')){
//or isset($request->file){
... //you have access to 'request->file' only here
}