Laravel 5,尝试多文件上传,Request :: file()只返回最后一个文件?

时间:2015-05-04 00:44:13

标签: php http laravel upload laravel-5

我正在尝试使用Laravel 5的Request外观使用相同的密钥上传多个文件。从我在其他地方读到的,正确的方法是在不将参数传递给Request::file()方法的情况下调用::file()

但是,这似乎只返回请求中发送的最后一个文件。

接头

POST /test/service/upload HTTP/1.1
Host: www.****.dev
X-CSRF-TOKEN: 2DQBuTuy50EELFen5vXFaOv1cyXICmAISUx8LoCS
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="photo"; filename="10464005_10152969193248906_6272325120604924631_n.jpg"
Content-Type: image/jpeg


----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="photo"; filename="10458555_10152969192978906_1569926627111581344_n.jpg"
Content-Type: image/jpeg


----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="photo"; filename="10365774_10152969188498906_1884545544754633531_n.jpg"
Content-Type: image/jpeg


----WebKitFormBoundaryE19zNvXGzXaLvS5C

PHP

    $files = Request::file();
    $names = [];

    foreach ($files as $file) {
        $names[] = $file->getClientOriginalName();
    }
    return $names;

响应

[
    "10365774_10152969188498906_1884545544754633531_n.jpg"
]

我是否需要为此工作正确设置任何类型的配置或标头?如果它有帮助,这将是一个基于AJAX的请求,我一直在使用Google Chrome扩展程序“Postman”进行测试。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:8)

使用文件元素数组作为html,如跟

$files = Request::file('photo');
    $names = [];

    foreach ($files as $file) {
        $names[] = $file->getClientOriginalName();
    }
    return $names;

在表单和laravel中添加enctype属性以获取文件使用文件的键如下

<script type="text/javascript" src="jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="js/materialize.min.js"></script>

据我说它应该有效。