在 Laravel 5.8.38 中上传多个文件时数组到字符串的转换错误
Array to string conversion error when multiple file upload in Laravel 5.8.38
在Laravel 5.8.38中尝试实现多文件上传功能时出现数组到字符串转换错误
找不到关于它的任何决定
在 blade 形式中我有简单的东西:
<form class="form-horizontal" action="{{route('admin.estates.store')}}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<label for="estate_image" class="mt-4">Images</label>
<input type="file" name="estate_image[]" multiple>
<input class="btn btn-primary" type="submit" value="Сохранить">
<input type="hidden" name="created_by" value="{{Auth::id()}}">
</form>
我的商店功能有:
该函数创建一个庄园(一个属性)。如果用户为其添加一些图像,我们将这些图像添加到本地路径并将它们添加到数据库中
如果我评论 $estate = Estate::create($request->all());
它工作正常
但在这种情况下,房地产不会添加到数据库中
public function store(Request $request)
{
$estate = Estate::create($request->all());
if($request->hasFile('estate_image')) {
foreach ($request->file('estate_image') as $image) {
// do some image resize and store it on local path
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('images\' . $filename);
Image::make($image)->resize(800, 400)->save($location);
// add image info in database
$estateimage = new EstateImages();
$estateimage->image_path = $location;
$estateimage->image_alt = 'testalt';
$estateimage->save();
}
}
}
我从输入中得到的数组
array:5 [▼
"name" => array:2 [▼
0 => "image1.jpg"
1 => "image2.jpg"
]
"type" => array:2 [▼
0 => "image/jpeg"
1 => "image/jpeg"
]
"tmp_name" => array:2 [▼
0 => "C:\OSPanel\userdata\php_upload\phpCB51.tmp"
1 => "C:\OSPanel\userdata\php_upload\phpCB52.tmp"
]
"error" => array:2 [▼
0 => 0
1 => 0
]
"size" => array:2 [▼
0 => 164808
1 => 58217
]
]
据了解,foreach 没有启动,但不明白为什么(试图删除 foreach 中的所有代码,只留下简单的 echo 'Hello!'; ,有同样的错误。
在 Whosebug 中看到了同样的问题,但其中的任何一个都对我有所帮助...
问题出在第一行
$estate = Estate::create($request->all());
所以,从 blade 我收到 a name="estate_image[]
数据,其中 是一个数组 ,并且 Laravel 试图在数据库单元格中添加一个数组.在数据库单元格 cold 中只添加字符串值 ,通过它,我遇到了那个错误。
通过从数据库中删除此列并从主模型中的 $fillable
变量中删除此列来解决它。
对我来说这是一件非常愚蠢和容易的事情,但希望这个答案对某人有所帮助。 :-)
在Laravel 5.8.38中尝试实现多文件上传功能时出现数组到字符串转换错误 找不到关于它的任何决定
在 blade 形式中我有简单的东西:
<form class="form-horizontal" action="{{route('admin.estates.store')}}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<label for="estate_image" class="mt-4">Images</label>
<input type="file" name="estate_image[]" multiple>
<input class="btn btn-primary" type="submit" value="Сохранить">
<input type="hidden" name="created_by" value="{{Auth::id()}}">
</form>
我的商店功能有:
该函数创建一个庄园(一个属性)。如果用户为其添加一些图像,我们将这些图像添加到本地路径并将它们添加到数据库中
如果我评论 $estate = Estate::create($request->all());
它工作正常
但在这种情况下,房地产不会添加到数据库中
public function store(Request $request)
{
$estate = Estate::create($request->all());
if($request->hasFile('estate_image')) {
foreach ($request->file('estate_image') as $image) {
// do some image resize and store it on local path
$filename = time() . '.' . $image->getClientOriginalExtension();
$location = public_path('images\' . $filename);
Image::make($image)->resize(800, 400)->save($location);
// add image info in database
$estateimage = new EstateImages();
$estateimage->image_path = $location;
$estateimage->image_alt = 'testalt';
$estateimage->save();
}
}
}
我从输入中得到的数组
array:5 [▼
"name" => array:2 [▼
0 => "image1.jpg"
1 => "image2.jpg"
]
"type" => array:2 [▼
0 => "image/jpeg"
1 => "image/jpeg"
]
"tmp_name" => array:2 [▼
0 => "C:\OSPanel\userdata\php_upload\phpCB51.tmp"
1 => "C:\OSPanel\userdata\php_upload\phpCB52.tmp"
]
"error" => array:2 [▼
0 => 0
1 => 0
]
"size" => array:2 [▼
0 => 164808
1 => 58217
]
]
据了解,foreach 没有启动,但不明白为什么(试图删除 foreach 中的所有代码,只留下简单的 echo 'Hello!'; ,有同样的错误。 在 Whosebug 中看到了同样的问题,但其中的任何一个都对我有所帮助...
问题出在第一行
$estate = Estate::create($request->all());
所以,从 blade 我收到 a name="estate_image[]
数据,其中 是一个数组 ,并且 Laravel 试图在数据库单元格中添加一个数组.在数据库单元格 cold 中只添加字符串值 ,通过它,我遇到了那个错误。
通过从数据库中删除此列并从主模型中的 $fillable
变量中删除此列来解决它。
对我来说这是一件非常愚蠢和容易的事情,但希望这个答案对某人有所帮助。 :-)