【问题标题】:laravel file array storagelaravel 文件数组存储
【发布时间】:2016-11-27 11:34:43
【问题描述】:

我想存储文件数组但我有一些问题,这是我的 html 代码

<div>
<input type="file" name tmp[]></input>
<textarea name="text[]"></textarea>
</div>
<div>
<input type="file" name tmp[]></input>
<textarea name="text[]"></textarea>
</div>

和我的控制器

foreach ($request->input('text') as $key => $step){
$data = new Step;
if($request->hasFile('tmp[$key]'){
$file = $request->tmp[$key];
    $extension = $file->getClientOriginalExtension();
    $file_name = strval(time()).str_random(5).'.'.$extension;

    $destination_path = public_path().'/step-upload/';
    $data->img_url = $file_name;
    $upload_success = $file->move($destination_path, $file_name);

}
$data->text=$step;

但是没用,我发现api不支持hasFile(array),它只支持hasFile(string $key)

我还删除了 if($request->hasFile('tmp[$key]'){} 但发现无论那里有多少输入文件,它只会捕获第一个。 有什么解决办法吗?

【问题讨论】:

    标签: php arrays file laravel


    【解决方案1】:

    假设您的 HTML 实际上是正确的,并且您在 form 上使用了正确的编码类型。

    Laravel 在hasFile 函数中使用了它的点注释功能。所以你要做的是使用('tmp.' . $key)而不是'tmp[$key]'(这是不正确的,read up opon double vs single quotes)。

    所以,你的代码应该是这样的:

    foreach ($request->input('text') as $key => $step) {
        if ($request->hasFile('tmp.' . $key)) {
            $file = $request->file('tmp.' . $key);
            // work with $file
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 2021-02-24
      • 1970-01-01
      • 2018-12-12
      • 2020-05-09
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多