我正在尝试创建一个问题系统,允许用户创建动态数量的问题以及动态数量的答案(他们可以从基于简单文本的答案到基于图像的答案中进行选择)。在请求中包含以下图像文件集合:'image_opt' =>array:4 [▼ 0 => array:1 [▼ 0 => "file_q1_1" 1 => "file_q1_2" ] 1 => array:1 [▼ 0 => "file_q2_1" 1 => "file_q2_2" ] 2 => array:4 [▼ 0 => "file_q3_1" 1 => "file_q3_2" 2 => "file_q3_3" 3 => "file_q3_4" ] ]如何获取每个文件并将其存储在服务器中?到目前为止,我已经尝试过这个$answer = new Answer();$file = $request->image_opt[$i][$j];$name = str_random(45) . $file->getClientOriginalExtension();$folder = '/uploads/answers/';$path = $file->storeAs($folder, $name, 'public');$answer->answer = $folder . $name;$answer->question_id = $question->id;$answer->max_weight = 0;$answer->weight = $request->image_weight[$i][$j];$answer->answer_type_id = $question->question_type_id;$answer->save();问题是......我无法获取文件,根据错误,我当时只有字符串。Call to a member function storeAs() on string也试过哪个也没用。$file = $request->file(image_opt[$i][$j]);如何从集合中获取每个文件?$i 代表正在存储的当前问题,$j 代表正在存储的答案,img_opt 是文件的集合。
1 回答

素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
确保您的<form>
元素具有enctype="multipart/form-data"
在 Laravel 中正确处理图片上传的属性。忽略这一点可能会导致问题,显然就是这种情况。
<form method="POST" action="..." enctype="multipart/form-data">
这个错误:
在字符串上调用成员函数 storeAs()
是由于如何$request->image_opt[$i][$j]
默认string
为上传图像的值。这相当于调用$request->input("image_opt")[$i][$j]
,但这不是一个input()
变量,它是一个file()
变量。
下一个错误:
为 foreach() 提供的参数无效
出于同样的原因,foreach($request->file("image_opt) AS $images){ ... }
正在返回null
whenenctype
被省略。它应该是一个数组,如果你使用了它就会是一个数组,$request->input()
但这也是一个错误。
TL:博士;不要忘记enctype
; 省略它是遇到各种问题的原因。
- 1 回答
- 0 关注
- 147 浏览
添加回答
举报
0/150
提交
取消