在Laravel中编辑时,如何更改下载文件的名称


if (isset($article) && isset($article->id))

<option value="0" {{ ($article->published == 0) ? 'selected' : '' }}>Publish</option>
<option value="1" {{ ($article->published == 1) ? 'selected' : '' }}>No publish</option>
@else
<option value="0" selected disabled>No publish</option>
<option value="1" disabled>Publish</option>
@endif
<img src="{{URL::to('/images').'/'.$article->image_path}}" alt="">
<input type="file" name="image_path" />

function upload(Request $request){
$image = $request->file('image_path');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
return $new_name; 
}

public function update(Request $request, Article $article)
{
$article->update($request->except('slug'));

$article->categories()->detach();
if($request->input('categories'))  :
$article->categories()->attach($request->input('categories'));
endif;
return redirect()->route('admin.article.index');    
}

当我进入编辑页面时,如果有图片,我需要在输入时记住,即使它在那里,我也没有编辑任何内容,那么数据库仍然是空的。

当我创建一个新帖子并保存一张新图片时,一切都很好,但当我编辑时,我需要记住已经存在的内容,如果我不更改,则将其保存到数据库中,除非我上传另一张。

试试这个:

public function update(Request $request, Article $article)
{
$article->update($request->except('slug', 'image_path'));
if ($request->hasFile('image_path')) {
// Add your file upload logic here
$image = $request->file('image_path');
$new_name = rand() . '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
$article->image_path = $new_name;
$article->save();
}
$article->categories()->detach();
if ($request->has('categories')) {
$article->categories()->attach($request->input('categories'));
}
return redirect()->route('admin.article.index');
}

来源Laravel文档

您还可以阅读更多关于文件上传的信息,以增强您的代码:https://laravel.com/docs/6.x/requests#files

首先需要在数据库中检查或匹配文件是否存在:

我想你有最新的相关记录。表示单个记录。"image_path"的意思是图像的名称,对吗?

If( $article->image_field_name == $request->input('image_path'){
//Your update logic here.
}

最新更新