Laravel将图像上载到img文件夹
使用Laravel将图像上载到img文件夹,laravel,laravel-5,Laravel,Laravel 5,使用form class将一张或多张图像上传到我的存储器中的最佳方式是什么 刀片: <form class="" action="{{route('newproduct')}}" method="post"> <div class="form-group"> <div class="form-group"> <label for="myimage"> <img src="/img/{{$user->
form class
将一张或多张图像上传到我的存储器中的最佳方式是什么
刀片:
<form class="" action="{{route('newproduct')}}" method="post">
<div class="form-group">
<div class="form-group">
<label for="myimage"> <img src="/img/{{$user->myimage}}" height="80" width="80"></label>
<input type="file" id="myimage" name="myimage"></font>
</div>
</div>
在我的控制器中,它只将随机生成的名称保存在数据库中,但不将文件上载到我的服务器。我想使用此路径保存路径:
/public/img/
更新的代码没有图像路径:
public function NewProduct (Request $request)
if($request->hasFile('myimage')){
if ($request->file('myimage')->isValid()) {
$user = Auth::user();
$image_name = date('mdYHis') . uniqid() . $request->file('myimage')->getClientOriginalName();
$user->save();
return redirect()->back();
}
}
谢谢首先,将enctype=“multipart/form data”
添加到
然后,在控制器中添加以下内容:
public function NewProduct(Request $request){
if($request->hasFile('myimage')){
if ($request->file('myimage')->isValid()) {
$user = Auth::user();
$image_name = date('mdYHis') . uniqid() . $request->file('myimage')->getClientOriginalName();
$path = base_path() . '/public/img';
$request->file('myimage')->move($path,$image_name);
$user->myimage = $path.$image_name;
$user->save();
return redirect()->back();
}
return redirect()->back()->with('error', 'image not valid');
}
return redirect()->back()->with('error', 'no image');
}
对于多个图像,只需迭代myimage数组:
public function NewProduct(Request $request){
if($request->hasFile('myimage')){
// Do a loop over all images
foreach ($request->file('myimage') as $image) {
if ($image->isValid()) {
$user = Auth::user();
$image_name = date('mdYHis') . uniqid() . $image->getClientOriginalName();
$path = base_path() . '/public/img';
$image->move($path,$image_name);
$user->myimage = $path.$image_name;
$user->save();
return redirect()->back();
}
}
// end loop
}
return redirect()->back()->with('error', 'no image');
}
这种方法的一个问题是,用户将使用最后一个图像来存储它(所有图像都将上载,但用户图像路径将是最后一个)
可以通过创建一个表来存储用户图像路径并将图像保存在其中(一对多关系)Blade:
<form action="{{route('newproduct')}}" method="post" enctype="multipart/form-data">
<div class="form-group">
<div class="form-group">
<label for="myimage">
<input type="file" id="myimage" name="myimage"></font>
</div>
</div>
</form>
需要添加到表单
enctype=“multipart/form data”
,但我的控制器中还需要一个代码?检查并尝试我的应答解析错误:语法错误,意外的“if”(T_if),应为“;”或者“{”if语句前面有一行没有添加;
,但是:解析错误:语法错误,意外的'if'(T_-if),期望函数(T_-function)您将代码放在哪里?让我更新它并设置一个函数…效果很好:)但是它将图像另存为:“/var/www/html/myproject/public/IMG012320180734575A66D791781E1BTICON.png”其中img在图片名称前没有“/”。为什么路径很长而不是“/img/imagename.png”?
<form action="{{route('newproduct')}}" method="post" enctype="multipart/form-data">
<div class="form-group">
<div class="form-group">
<label for="myimage">
<input type="file" id="myimage" name="myimage"></font>
</div>
</div>
</form>
use Illuminate\Support\Facades\Storage;
public function NewProduct(Request $request){
// if request has file
if($request->hasFile('myimage')){
$filenameWithExt=$request->file('myimage')->getClientOriginalName();
$filename=pathinfo($filenameWithExt,PATHINFO_FILENAME);
$extension=$request->file('myimage')->getClientOriginalExtension();
$fileNameToStore= date('mdYHis') . uniqid() .$filename.'.'.$extension;
request()->myimage->move(public_path('img'), $fileNameToStore);
}else{
// if no file from request , then put one no-image.jpeg in public/img folder
$fileNameToStore='no-image.jpeg'
}
$user = Auth::user();
$user->myimage=$fileNameToStore;
$user->save();
return redirect()->back();
}