下面是我如何将图像路径保存到我的数据库中。现在,当我保存产品和图像时,路径在我的数据库中保存为uploads/catalog/images/3423423423.jpg
。但问题是,我找不到文件夹uploads/catalog/images
中的图像。
我在做什么不对吗?
public function upload(Request $request, $id)
{
try {
$product = Product::findorfail($id);
if ( $request->hasFile('image'))
{
$path = $request->file('image')->store('uploads/catalog/images');
$file_name = $request->file('image')->hashName();
$product->saveProduct($request);
$product->images()->create(['path' => $file_name]);
} catch (\Exception $e) {
throw new \Exception('Try again: ' . $e->getMessage());
}
}
HTML
<form id="product-save-form"
action="{{route('user.product.update', $model->id)}}"
enctype="multipart/form-data" method="post">
{{ csrf_field() }}
<input type="hidden" name="_method" value="put">
<div class="row" id="product-save-accordion" data-children=".product-card">
<div class="col-12 mb-2 mt-2">
<div class="card product-card mb-2 mt-2">
<a data-toggle="collapse" data-parent="#product-save-accordion"
class="float-right" href="#basic">
<!-- <div class="card-header">
Basic Details
</div> -->
</a>
<div class="card-body collapse show" id="basic">
@include('mage2-ecommerce::admin.product.card.basic', ['editMethod' => true])
<input type="file" class="form-control" name="image" data-token="{{ csrf_token() }}">
</div>
</div>
</div>
</div>
<div class="form-group">
<button type="button" class="btn btn-primary" onclick="jQuery('#product-save-form').submit()">
Edit Product
</button>
<button type="button" class="btn" onclick="location='{{ route('user.product.index') }}'">
Cancel
</button>
</div>
</form>
答案 0 :(得分:2)
我无法弄清楚你为什么要通过findOrFail($ id),因为它没有以id身份存储到数据库中,因此,我还没有把它包括在内在我的函数/查询...
这里是图像存储/移动的通用布局:
public function upload(Request $request, Product $product)
{
if($files=$request->file('image')){
$path = public_path('uploads/catalog/images');
$name= $files->getClientOriginalName();
$files->move($path, $name);
$product->create([
'image' => $name
]);
}
}
答案 1 :(得分:1)
我认为你的代码很好,看起来工作正常。您只需要授予将所有图像保存到该文件夹的权限! (即uploads/catalog/images
文件夹)
尝试向uploads/catalog/images
提供权限:
sudo chmod 777 public/uploads/catalog/images
希望这可以解决您的问题!