laravel - Laravel 调整中的多个图像上传以添加其他字段
问题描述
我需要上传多张图片。下面的代码运行良好。这是使用干预图像插件。我正在尝试自定义此代码以向此图像模型的父级添加另一个作为 ForeignKey 值的字段。$request 具有来自表单的值。如何将其与图像一起保存?
值为:
$request('vehicle_id')
如何调整以下方法以使 save 也包含此车辆 ID?
public function uploadImage(Request $request)
{
$request->validate([
'image' => 'required',
'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
//check if image exist
if ($request->hasFile('image')) {
$images = $request->file('image');
// create new directory for uploading image if doesn't exist
if( ! File::exists('images/'.auth()->user()->id)) {
$org_img = File::makeDirectory('images/'.auth()->user()->id, 0777, true);
}
// loop through each image to save and upload
foreach($images as $key => $image) {
//create new instance of Photo class
$newPhoto = new $this->photo;
//get file name of image and concatenate with 4 random integer for unique
$filename = rand(1111,9999).time().'.'.$image->getClientOriginalExtension();
//path of image for upload
$org_path = 'images/'.auth()->user()->id . $filename;
$newPhoto->image = 'images/'.auth()->user()->id.$filename;
//don't upload file when unable to save name to database
if ( ! $newPhoto->save()) {
return false;
}
// upload image to server
if ($org_img == true) {
Image::make($image)->fit(900, 500, function ($constraint) {
$constraint->upsize();
})->save($org_path);
}
}
}
return redirect('/home')->with('success','Images Uploaded');
}
解决方案
我找到了解决方案
public function uploadImage(Request $request)
{
$request->validate([
'image' => 'required',
'image.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'vehicle' => 'required'
]);
//check if image exist
if ($request->hasFile('image')) {
$images = $request->file('image');
// create new directory for uploading image if doesn't exist
if( ! File::exists('images/'.auth()->user()->id.'/')) {
$org_img = File::makeDirectory('images/'.auth()->user()->id.'/', 0777, true);
}
// loop through each image to save and upload
foreach($images as $key => $image) {
//create new instance of Photo class
$newPhoto = new $this->photo;
//get file name of image and concatenate with 4 random integer for unique
$filename = rand(1111,9999).time().'.'.$image->getClientOriginalExtension();
//path of image for upload
$org_path = 'images/'.auth()->user()->id.'/' . $filename;
$newPhoto->image = 'images/'.auth()->user()->id.'/' . $filename;
$newPhoto->vehicle = $request->input('vehicle');
//don't upload file when unable to save name to database
if ( ! $newPhoto->save()) {
return false;
}
// upload image to server
Image::make($image)->fit(900, 500, function ($constraint) {
$constraint->upsize();
})->save($org_path);
}
}
return redirect('/home')->with('success','Images Uploaded');
推荐阅读
- angularjs - 使用 Leaflet js 时如何使用令牌附加授权标头
- firebase - 无法从 firebase 函数连接到 Cloud Sql (postgres)
- python - 无法使用简单的条件语句修改 DataFrame。但在使用静态数字时有效
- python - Django Rest Framework 需要非空查找字段
- django - 在表单中添加新的多对多关系?
- google-maps-api-3 - 在 react-google-maps 中动态添加、更新、删除标记
- javascript - 在生成器中选择全局状态是否会使函数不纯?
- mysql - 如何在 MySQL 中将多个查询解决方案编写为单个查询
- git - 为什么 Git GUI 一直叫我 Jon Skeet?
- unity3d - 来自对撞机的不需要的碰撞 - 检查矩阵和图层中的禁用