gpt4 book ai didi

php - Laravel 5.4 替换文件(如果存在)

转载 作者:可可西里 更新时间:2023-11-01 13:59:38 25 4
gpt4 key购买 nike

我需要解决一个小的不便之处,即在修改关联的注册表时,我会出现更新图像的问题。

当我修改注册表时,我想替换目录中的关联文件。

这是我的表结构:

Schema::create('institutions', function(Blueprint $table)
{
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('name')->unique();
$table->string('initials')->nullable();
$table->string('description')->nullable();
$table->string('avatar')->default('default.jpg');
$table->timestamps();
});

这是我在 Controller 上的更新方法:

public function update(Request $request, $id)
{
//

$institution = $this->institution->find($id);

try
{
$institution->update($request->all());

if($request->hasFile('avatar')){
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(250, 205)->save( public_path('uploads/institutions/' . $filename ) );

$institution->avatar = $filename;
$institution->save();
}

$updated = $institution;

$message = flash('Institución actualizada correctamente!!!', 'success');

return redirect()->route('instituciones.index')->with('message', $message);
}

catch(\Illuminate\Database\QueryException $e)
{
$message = flash('La institución no se actualizó correctamente!!!', 'danger');

return redirect()->route('institutions.create')->with('message', $message);
}

}

我尝试了不同的方法,但我没有成功。

最佳答案

上传的图片必须具有相同的文件名才能替换旧的,但在这种情况下,由于 time() 方法,它不会替换。

您可以通过从数据库中获取文件名并保存新图像来删除旧图像

//find data by id
$institution = $this->institution->find($id);
$filename = public_path('uploads/institutions/').$institution->avatar;
if(File::exists($filename)) {

$avatar = $request->file('avatar');
$filename_new = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(250, 205)->save( public_path('uploads/institutions/' . $filename_new ) );

//update filename to database
$institution->avatar = $filename_new;
$institution->save();
//Found existing file then delete
File::delete($filename); // or unlink($filename);
}

希望对你有帮助

关于php - Laravel 5.4 替换文件(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com