我想將檔案名存盤到我的資料庫中,以便它可以檢索該影像并顯示它,我已經實作了一些東西,通過在實際檔案名前面添加上傳時間來防止將同名檔案添加到我的影像檔案夾中正如在“$newImageName”變數中看到的那樣,我的問題是如何傳遞“$newImageName”以存盤在我擁有的當前代碼給出的資料庫中?
public function store(Request $request)
{
$this->validate($request, [
'subject' => 'required|min:5',
'tags' => 'required',
'thread' => 'required|min:25',
'image' => 'required|mimes:png,jpg,jpeg'
]);
$newImageName = time() . '-' . $request->subject . '.' . $request->image->extension();
$request->image->move(public_path('images'), $newImageName);
$thread = auth()->user()->marketthreads()->create($request->all());
$thread->tags()->attach($request->tags);
return back()->withMessage('Market thread has been created');
任何幫助將不勝感激
謝謝 :)
uj5u.com熱心網友回復:
您需要在資料庫中創建一個表來存盤影像。在您的表中,您基本上需要一個 ID 和存盤中影像檔案的名稱,在您的情況下稱為$newImageName。您可以通過遷移來做到這一點,如下所示:
Schema::create('images', function (Blueprint $table) {
$table->increments('id');
$table->string('filename');
$table->timestamps();
});
- 提示:時間戳存盤您的影像創建時間,因此您無需將其存盤在檔案名中。相反,在創建專案之后,您可以檢索由新物件生成的 ID 以用于您的檔案名,以防止覆寫。這是一種更安全的方法,因為有可能同時上傳同名檔案。
每當您上傳新專案時,請在控制器中執行以下操作:
$image = new Image();
$image->filename = $newImageName;
$image->save();
這會將影像檔案名保存在您的資料庫中以供進一步使用。
- 提示:如果您想進一步創建更結構化的設計,您可以繼續為您的影像創建一個模型并將它們附加到您的其他模型,以防以更簡單的方式檢索它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/428747.html
