【发布时间】:2018-10-05 21:27:13
【问题描述】:
我有一个包含多个字段的表格,如下所示。
当我更新表单时,只有 large_image 字段会更新,thumbnail_image 不会更新。
我的表单
<form action="/update', $id)}}" enctype="multipart/form-data" method="post" files="true">
<input type="text" name="name">
<input type="file" name="large_image" multiple="false" accept="image/x-png, image/jpeg">
<input type="file" name="thumb_image" multiple="false" accept="image/x-png, image/jpeg">
<input type="submit">
型号
class Item extends Model {
protected $fillable = ['name', 'large_image', 'thumb_image'];
}
控制器
public function update((Request $request, $id){
$requestData = $request->all();
$item= Item::findOrFail($id);
if ($request->hasFile('large_image'))
{
$fileName = $request->file('large_image')->getClientOriginalName();
$fileExt = $request->file('large_image')->getClientOriginalExtension();
$fullFileName = $fileName.'_'.time().'.'.$fileExt;
$path = public_path('images');
Image::make($fileName)->save($path . DIRECTORY_SEPARATOR. $fullFileName);
$requestData['large_image'] = "images/{$fullFileName}";
}
if ($request->hasFile('thumb_image'))
{
$file = $request->file('thumb_image');
{
$file_thumb = $request->file('thumb_image')->getClientOriginalName();
$file_thumb_Ext = $request->file('thumb_image')->getClientOriginalExtension();
$fullfile_thumb = $file_thumb.'_'.time().'.'.$filethumb_Ext;
$path_thumb = public_path('images/thumb');
Image::make($file)->save($path_thumb . DIRECTORY_SEPARATOR. $fullfile_thumb);
}
$requestData['thumb_image'] = "images/thumb/{$fullfile_thumb}";
}
$item->update($requestData);
}
我在这里缺少什么?但是这两个图像都已上传,并且图像路径在 create 方法中写入数据库。
【问题讨论】:
-
在这里大吃一惊,但这是因为
if ($request->hasFile('thumb_image)块中的额外荣誉({和})吗?好像你不能在 PHP 中做到这一点:3v4l.org/rVnWX -
我尝试删除它,但没有成功。图片上传到
images/thumb,但不在数据库中。 -
更改 $requestData['large_image'] = "images/{$fullFileName}";到 $item->large_image = "images/{$fullFileName}";然后使用 $item->save();
-
是的,它似乎有效。为什么会这样?对于一张图片
$requestData['large_image'] = "images/{$fullFileName}"有效,为什么不为$requestData['thumb_image'] = "images/{$fullfile_thumb}"? -
展示你的模特老兄!
标签: database laravel controller eloquent