2016-11-07 14 views
1

私は自分のコントローラにファイルをアップロードしていますので、ファイルを最後に追加する必要があります。それをユーザーに表示するとき、ユーザーが唯一のPHPで(オリジナルのファイル名を見ているように、私は私の質問はこれです、このカーボンラーベールをファイル名に追加

 $upload->title = Auth::User()->id; 
     $current = Carbon::now(); 
     $file = $request->file('file'); 
     $file->move(storage_path(). '/', $file->getClientOriginalName()); 
     $upload->name = $file->getClientOriginalName().$current; 
    } 

ようにそれをやっている、私はそれを行うことができますが、私はしたいと思い、それを削除する方法「laravel道」)

+0

ララベルのやり方は?これは文字列の操作だけで、Laravelの方法である必要はありません。 – Devon

答えて

2

は、あなたが、それはいくつかのファイルシステムで:を持っているため、ファイル名にCarbon::now()を追加するので、このような何かを行うことはできません使用します。

$current = time(); // Will output something like 1478529571 

やファイル名が異なっていて、あなただけしたい場合は日付を追加:

$current = date('Ymd'); // Will output something like 20161107. 

または、カーボンを使用する場合:

$current = Carbon::now()->format('YmdHs'); // WIll output something like 201611071419 
1

アレクセイは、カーボンを述べたように::今()オブジェクトを返しますが、ときに__toString()マジックメソッドはYYYY-MM-DD HH:MM:SS形式になります文字列に変換されます。私にとって、これはファイル名の形式が悪いようで、UNIXのタイムスタンプははるかに良いでしょう。

このようなファイルを格納したい場合は、2つの列を格納するのは意味がありませんか?

Filename | Timestamp 
--------------------- 
OriginalFileName | 123456789 

OriginalFileName.123456789としてファイルシステムに保存しますが、OriginalFileNameとしてクライアントに見せ、何の文字列操作は必要ありません。

ファイルシステムに保存するときに元のファイル名を使用していない人もいれば、ユニークなハッシュを生成してデータベースの元のファイル名の横に保存するだけです。

+0

ありがとう、決して2つの列で私の心を越えた – OunknownO

関連する問題