【发布时间】:2019-07-02 13:25:41
【问题描述】:
你好,我试图在 Laravel 中编辑文件,但是当我编辑文件时,它的名称会根据 db 中的编辑而改变,但文件没有替换文件夹中的前一个文件,m 使用资源路由,
控制器:
public function update(Request $request, $id)
{
$request->validate([
'filename' => 'required',
]);
$file = $request->file('filename');
$clientName = $file->getClientOriginalName();
$path = $file->move(public_path('files'), $clientName);
File::whereId($id)->update(['filename' => $clientName]);
return redirect('file')->with('success', 'Data is successfully updated');
}
刀片文件:
<form method="post" action="{{ route('file.update', $data->id) }}" enctype="multipart/form-data">
@csrf
@method('PATCH')
<div class="form-group">
<label for="EditFile">Edit File</label>
<input type="file" name="filename" class="form-control-file">
<img src="{{ URL::to('/') }}/files/{{ $data->file }}" width="100"/>
<img src="./images/pdf.png" class="img-circle elevation-2" alt="Pdf Image" width="50">
<input type="hidden" name="hidden_file" value="{{ $data->file }}" />
</div>
<br>
<input type="submit" name="edit" class="btn btn-primary input-lg" value="Edit" />
</form>
谁能发现代码中的任何错误??
【问题讨论】:
-
文件名变了吗?
-
是的文件名正在改变
-
这完全取决于您应用的技术。通常,当您检索并显示图像时,您编辑并选择另一个进行更新,新图像的文件名将替换字段中的先前名称。新上传的图片保存在一个文件夹中。
-
$file->move(...)的使用让我有点困惑。为什么不$file->save(...)?我不会太在意 PHP tmp 文件夹。它会自行清理。您可能会遇到通过移动文件来覆盖现有文件的问题。这可能是权限问题,也可能是 PHP 本身内部工作的典型问题。尝试save()以更新现有文件。 -
@DimitriMostrey 将 move 替换为 save 会显示错误:Method Illuminate\Http\UploadedFile::save 不存在。
标签: laravel eloquent laravel-5.8