繁体   English   中英

laravel文件阵列存储

[英]laravel file array storage

我想存储文件数组,但是我有一些问题,这是我的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]'){},但是发现无论那里有多少输入文件,它只会捕获第一个。有什么解决方案吗?

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

Laravel在hasFile函数中使用其点注释功能。 因此,您要使用('tmp.' . $key)而不是'tmp[$key]' (这是不正确的,请阅读opon双引号与单引号 )。

因此,您的代码应如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM