[英]how to save image with other name in laravel 5.4
我在laravel 5.4中進行CRUD操作。 我正在將圖像保存在數據庫和存儲中。 我做到了,但是並沒有使用隨機名稱。 表示如果圖像名稱是logo.jpg,則我需要該圖像的其他一些隨機名稱保存在數據庫和文件夾中。
我嘗試過這個。 但是,如果我用相同的名稱保存兩個不同的圖像,則將其替換為新的圖像。
我的web.php是:
Route::resource('todo','todocontroller');
我的todocontroller.php是:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\todo;
class todocontroller extends Controller
{
public function create()
{
return view('todo.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$todo = new todo;
$this->validate($request,[
'title' => 'required|unique:todos',
'file' => 'image|mimes:jpeg,png,jpg,gif',
'body' => 'required',
],
[
'title.required' => 'Title can not be empty',
'unique' => 'Already inserted. Please try another.',
'file.image' => 'Upload only JPEG OR PNG',
'body.required' => 'Body can not be empty',
]);
if ($request->hasFile('file')) {
$images = $request->file->getClientOriginalName();
$request->file->storeAs('public/images',$images);
$todo->image = $images;
}
$todo->title = $request->title;
$todo->body = $request->body;
$todo->save();
session()->flash('message','Inserted Successfully');
return redirect('todo');
}
}
我的create.blade.php是:
@extends('layout.app')
@section('body')
<br>
<a href="../todo" class="btn btn-info">Back</a>
<h1>Create new item</h1><br>
<form action="../todo" method="POST" enctype="multipart/form-data">
{{csrf_field()}}
<input type="text" name="title" value="{{old('title')}}" placeholder="title">{{$errors->first('title',':message')}}
<br>
<input type="file" name="file" placeholder="Image">{{$errors->first('file',':message')}}
<br>
<textarea rows="5" name="body" placeholder="body">{{old('body')}}</textarea>{{$errors->first('body',':message')}}
<button type="submit">Submit</button>
</form>
</div>
@endsection
請嘗試此代碼更新代碼。 time()
獲取當前timestamp
。
if ($request->hasFile('file')) {
$file = $request->file('file');
$extension = $file->getClientOriginalExtension(); // getting image extension
$filename = time().'.'.$extension;
$file->move('public/images/', $filename);
$todo->image = $filename;
}
試試下面的代碼。
if ($request->hasFile('file')) {
$images = $request->file->getClientOriginalName();
$images = time().'_'.$images; // Add current time before image name
$request->file->storeAs('public/images',$images);
$todo->image = $images;
}
問題非常模糊,但是如果我理解正確,則可以嘗試在圖像名稱后附加一個隨機字符串hash
。
也許嘗試這樣做:
$images = md5(microtime()).'_'.$request->file->getClientOriginalName();
這會將microtime
has附加到您的圖像名稱,然后將其保存到數據庫。
如果要保存其他名稱的圖像,請使用以下方法: storeAs()
來自Laravel文檔:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.