[英]Uploading and storing an image in Laravel 5.8 image not storing in database or file path
laravel 相当新我想上传图像并将其存储在数据库和文件路径中。 我遇到的第一个问题是图像没有出现在validateRequest function 的数组中,因此它在数据库中返回为 NULL。 第二个问题是我尝试使用storage:link来存储所有上传的图像,但似乎无法存储图像并且不确定我打算使用什么文件路径。
public function validateRequest()
{
$validated = request()->validate([
'title' => 'required|string',
'h1' => 'required|string',
'page_title' => 'required|string',
'meta_description' => 'required|string',
'content' => 'required|string',
'active' => 'integer'
]);
if (request()->hasFile('image')){
$validated = request()->validate([
'image' => 'sometimes|file|image|mimes:jpeg,png,jpg,gif,svg|max:5000'
]);
}
// Check if active is ticked
$validated['active'] = isset(request()->active[0]) ? 1 : 0;
// Create slug from title
$validated['slug'] = Str::slug(request()['title'], '-');
return $validated;
}
public function storeImage($post)
{
if (request()->hasFile('image')) {
$post->update([
'image' => request()->image->storeAs('/images/uploads/posts', 'public')
]);
}
}
我尝试将图像与$validated = request()->validate
中的字段的 rest 一起放置,但即使已选择图像,它也会显示“此图像必须是图像”。 非常感谢您的帮助。
第一个问题是验证。 请将此添加到您的form
中
<form ... enctype="multipart/form-data">
第二个问题就是这样解决。 在你的 controller 像这样调用 function
$productImage = $request->file('your_image_name');
if (is_file($productImage)) {
$imageUrl = $this->productImageUpload($productImage);
$product->your_database_field_name = $imageUrl;
}
protected function productImageUpload($productImage)
{
$imageName = $productImage->getClientOriginalName();
$directory = 'your_file_path/your_file_path/';
$imageUrl = $directory . $imageName;
$productImage->move($directory, $imageName);
return $imageUrl;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.