我试图在嵌套数组中获取输入值,如下图所示。但问题是图像数组丢失或者如果不是,我不知道如何获取图像文件的值。
这就是我想要的方式
Array
(
[_token] => 7iSeeTphiVbpQw3iQ8eb1lReMRzxBY8Lt1lKqQea
[food] => Array
(
[product[1] => Array
(
[name] => 1
[price] => 10
[image]=>Uploaded image here
)
)
)
但我实际得到的是这个
Array
(
[_token] => 7iSeeTphiVbpQw3iQ8eb1lReMRzxBY8Lt1lKqQea
[food] => Array
(
[product[1] => Array
(
[name] => 1
[price] => 10
)
[product[2] => Array
(
[name] => 1
[price] => 10
)
)
)
我的表格刀片就像这样
<form method="POST" action="" enctype="multipart/form-data">
{{csrf_field()}}
<!-----PHP LOOP STARTS HERE ---->
<select class="form-control" name="food[product[$i][name]]">
<option value="1">Fried rice</option>
<option value="2">Demo food</option>
</select>
<input type="text" placeholder="set a price" class="form-control" name="food[product[$i][price]]">
<input type="file" placeholder="set a price" class="form-control" name="food[product[$i][image]]">
<!-----PHP LOOP ENDS HERE ---->
<button type='submit'>Submit</button>
任何人都可以帮助我如何获取图像,以便我可以存储在文件夹中并将URL保存到数据库?在控制器
更新 我改变了表格
<input type="text" placeholder="set a price" class="form-control" name="product[$i][price]">
<input type="file" placeholder="set a price" class="form-control" name="product[$i][image]">
在响应中我得到了
[product] => Array
(
[1] => Array
(
[name] => 1
[price] => 10
[image] => Illuminate\Http\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => dell-inspiron-3567-notebook-original-imaetu5ch98vzge5.jpeg
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
[size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 40705
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[hashName:protected] =>
[pathName:SplFileInfo:private] => C:\xampp\tmp\php17B2.tmp
[fileName:SplFileInfo:private] => php17B2.tmp
)
)
完成后我可以看到图像正在上传。现在如何捕捉那个图像? 如果我尝试使用foreach循环,那么图像就会丢失。我正在为图像获取未定义的索引。 那我该怎么办?
答案 0 :(得分:1)
您的表单中似乎没有文件字段。如果我理解正确,您希望用户能够上传图像。您需要将最后一个文本输入的类型更改为file。
<input type="file" placeholder="set a price" class="form-control" name="food[product[$i][image]]">
然后你可以在php中使用$ _FILES来获取你的图像。
希望这会有所帮助;)
答案 1 :(得分:0)
似乎无法以正常方式完成获取图像并验证Input::hasFile('image') or Input::file('image');
是否存在
所以这就是我做到的。
for ($i = 1; $i<=count(Input::get('product'));$i++){
$data['name']=$request->product[$i]['name'];
if (isset($request->product[$i]['price']) && !empty($request->product[$i]['price']) && isset($request->product[$i]['image'])){
$data['price']=$request->product[$i]['price'];
//upload image
$name= substr(md5(str_random(10)), 0, 8);
$imageName = $name.'.'.$request->product[$i]['image']->getClientOriginalExtension();;
$request->product[$i]['image']->move(public_path('images/food/'), $imageName);
$data['image']= 'images/product/'.$imageName;
if (Product::create($data)){
$msg ='All product has been successfully uploaded';
}
}else{
$msg ='Opps!! Something went wrong.';
}
}
我不知道是否有更好的方法可以这样做。如果是的话请告诉我。
谢谢@qvotaxon帮助我,大家也再次感谢:))