Laravel 图片更新

Laravel Image Update

我在 Laravel 5.6 中做一个管理面板,我在 productController --resource 更新时遇到问题。

我的店铺是这样的:

if($request->hasfile('filename'))
        {
        $file = $request->file('filename');        
        $name=$file->getClientOriginalName();        
        $image_resize = Image::make($file->getRealPath());              
        $image_resize->resize(590, 590);
        $image_resize->save(public_path('/images/urunler/' .$name));
        } 
        $urun = new Urun();
        $urun->k_id=$request->get('k_id'); 
        $urun->ad=$request->get('ad'); 
        $urun->form=$request->get('form');
        $urun->icerik=$request->get('icerik');                
        $urun->ticari_sekli=$request->get('ticari_sekli');
        $urun->filename=$name;
        $urun->save(); 

        return redirect('/urunler')->with('success','Ürün Başarı İle Eklendi.');

我的更新如下:

$urun= Urun::findOrFail($id);  
$urun->update($request->all());

if ($request->hasFile('filename'))
{
    $file = $request->file('filename');        
    $name=$file->getClientOriginalName();        
    $img = Image::make($file->getRealPath());              
    $img->resize(590, 590);                                                                         
    $img = Image::make($file->getRealPath())->resize(590, 590)->insert(public_path('/images/urunler/' .$name));                                                 
    $img->save(public_path('/images/urunler/' .$name));   
    $urun->image = $name;                        
}   
$urun->save();
return redirect('/urunler')->with('success','Ürün Başarı İle Güncellendi.');

存储部分正在工作,但更新部分保存了一个文件名数据库,但图像在 images/urunler 中没有移动。

我的 php 版本是 7.2.4,我正在使用 Laravel 5.6。

删除这些代码。

$img = Image::make($file->getRealPath())->resize(590, 590)->insert(public_path('/images/urunler/' .$name));                                                 
$img->save(public_path('/images/urunler/' .$name));  

之后。添加这些代码。

$location = public_path('/images/urunler/'.$name);
Image::make($file->getRealPath())->resize(590, 590)->save($location); 

试一试。

解决方法:将相关代码改成这样。

$location = public_path('/images/urunler/'.$name);
Image::make($file->getRealPath())->resize(590, 590)->save($location);
$urun->filename= $name;   

然后添加

 $this->validate(request(),[ 
 'k_id' => 'required',
 'ad' => 'required',
 'form' => 'required',
 'icerik' => 'required',
 'ticari_sekli' => 'required',
 'filename'=>'required' ]);

PS: 文件名必须是必需的。不需要|图像。这不是图像。它只是名字。 在该请求文件名之后。像那样:$urun->filename= $name;

不要 $urun->image= $name;。因为没有$urun->image.

这对我有用:

if ($request->file('filename')) {
        $file = $request->file('filename');
        $destinationPath = $_SERVER['DOCUMENT_ROOT'] . '/images/urunler/';
        $file->move($destinationPath, 'FILENAME.' . $file->getClientOriginalExtension());
}

只需将 FILENAME 编辑为您想要的文件名或将 FILENAME 替换为 $file->getClientOriginalName();

文件将保存在public/images/urunler/文件夹

编辑:

我能想到的最后一件事是:在表单打开标记位置 enctype="multipart/form-data"。这说明您的表单存在正常数据和可能的文件。可能仍然有不允许的文件,因此也将 files="true" 放在打开的表格中。