php - Laravel:更新表单保持当前图像而不输入新图像不起作用
问题描述
我有一个带有图像字段的表单,插入所有带有图像的字段都可以正常工作
但是在编辑表单->更新新图像时,我使用取消链接功能删除以前的图像并使用新图像进行更新。问题是如果我不上传新图片并提交它不起作用的表单。
但是如果没有上传新图像,我想保留当前图像。我尝试了很多方法,甚至不使用unlink功能,但无法找到任何解决方案。请帮助我,我真的需要这个解决方案。提前致谢
这是我在控制器中的更新功能
public function Update(Request $request, $id){
$PreviousPic = $request->Prev_pic;
$data = array();
$data['student_name'] = $request->student_name;
$data['matric_no'] = $request->matric_no;
$data['programme_name'] = $request->programme_name;
$data['faculty_name'] = $request->faculty_name;
$data['admission_year'] = $request->admission_year;
$data['contact_no'] = $request->contact_no;
$image = $request->file('pro_pic');
if ($image){
unlink($PreviousPic);
$image_name = date('dmy_H_s_i');
$ext = strtolower($image->getClientOriginalExtension());
$imageFullName = $image_name.'.'.$ext;
$uploadPath = 'media/';
$imageURL = $uploadPath.$imageFullName;
$success = $image->move($uploadPath,$imageFullName);
$data['pro_pic'] = $imageURL;
$Stdata = DB::table('students')->where('id', $id)->update($data);
return redirect()->route('student.index')
->with('success','Updated! The Student Data Updated Successfully');
}
}
这是我的编辑表单图像字段
<div class="form-group">
<label class="col-md-4 control-label" >Image</label>
<div class="col-md-5 inputGroupContainer">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-picture"></i></span>
<div class="upload-btn-wrapper">
<button class="btn">Upload a New Image</button>
<input type="file" name="pro_pic" />
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label">Current Image </label>
<div class="col-md-5 inputGroupContainer">
<img src="{{ URL::to($StudentData->pro_pic)}}" height="150px" width="190px">
<input type="hidden" name="Prev_pic" value="{{$StudentData->pro_pic}}">
</div>
</div>
使用它我可以上传新图片删除旧图片。但是,如果我将Upload a New Image字段留空并提交表单,则不会提交表单。
所以,我希望如果我上传新图片,它现在可以正常工作,如果我不上传新图片,当前图片将保留并提交表单。
#我正在使用 Laravel 7
解决方案
我已经按预期找到了答案
public function Update(Request $request, $id){
$PreviousPic = $request->Prev_pic;
$data = array();
$data['student_name'] = $request->student_name;
$data['matric_no'] = $request->matric_no;
$data['programme_name'] = $request->programme_name;
$data['faculty_name'] = $request->faculty_name;
$data['admission_year'] = $request->admission_year;
$data['contact_no'] = $request->contact_no;
$image = $request->file('pro_pic');
if ($image != null){
unlink($PreviousPic);
$image_name = date('dmy_H_s_i');
$ext = strtolower($image->getClientOriginalExtension());
$imageFullName = $image_name.'.'.$ext;
$uploadPath = 'media/';
$imageURL = $uploadPath.$imageFullName;
$success = $image->move($uploadPath,$imageFullName);
$data['pro_pic'] = $imageURL;
$Stdata = DB::table('students')->where('id', $id)->update($data);
return redirect()->route('student.index')
->with('success','Updated! The Student Data Updated Successfully');
}else{
$Stdata = DB::table('students')->where('id', $id)->update($data);
return redirect()->route('student.index')
->with('success','Updated! The Student Data Updated Successfully');
}
}
只需使用if else语句即可找到解决方案,并且效果很好。
推荐阅读
- git - 推送后未激活 git 文件夹
- python - 为python中的集群图分配唯一的颜色
- json - 将解析的 JSON 导出到 CSV 文件时为 -jq 自定义分隔符
- linux - 在运行时使用 Linux __init 函数
- java - viewpager2 仅加载第一个片段而不加载 offscreenPageLimit
- javascript - 如何使滑块在克隆的 HTML 页面上工作?
- java - 如何只允许整数和不允许超过 9 位数字
- python - TF2 对象检测 API:model_main_tf2.py - 验证丢失?
- c - 我如何从文件中读写这个结构数组?
- node.js - Typescript - 静态变量的未定义错误