2017-10-11 7 views
0

Laravel Backpack image Field Type文書を使用して画像のアップロードを行っています。Laravel Backpack Imageフィールドタイプ:元のファイル名で画像を保存

ミューテータの例では、md5ファイル名を使用していますが、ファイルを保存するときに元のファイル名を使用します。

// if a base64 was sent, store it in the db 
    if (starts_with($value, 'data:image')) 
    { 
     // 1. Make the image 
     $image = \Image::make($value); 
     // 2. Generate a filename. 
     $filename = md5($value.time()).'.jpg'; 
     // 3. Store the image on disk. 
     \Storage::disk($disk)->put($destination_path.'/'.$filename, $image->stream()); 
     // 4. Save the path to the database 
     $this->attributes[$attribute_name] = $destination_path.'/'.$filename; 
    } 

私はステップ2を編集する必要があります知っているが、全くわからないか、と私はステップ1.

ボーナス質問ちょうど私の理解を助けるために編集する必要がありますように感じる:「は何です\ 「ステップ1 『\イメージ:: ...』の

+0

なぜ助け

$data = Input::all(); Image::make(file_get_contents($data->base64_image))->save($path); 

希望あなたはBASE64として画像を受信して​​いる場合は、のようなものを試してみて?元のファイル名は使用しないでください。 'test.jpg'をアップロードする複数のユーザー、サーバーが気に入らない奇妙な文字の名前など、あらゆる種類の問題が発生します。 – ceejayoz

+0

バックパックはイメージ自体をアップロードせずファイルの内容をアップロードするので、元のファイル名は基本的にありませんbase64として – Danny

+0

@ceejayozこのプロジェクトでは複数のアップロードはありません。名前は標準文字です – cvassios

答えて

0

[ファイルファサードと入力ファサードを使用して試してみたいことがあり、私は通常(入力タイプを検証するためにFormRequestを持っている進める何 https://laravel.com/api/5.4/Illuminate/Support/Facades/File.html

名前がxまたはファイルのファイル入力されたファサードを直接検索して取り出すか、ファイルファサードを使用してそれを保存します。でも

$file = Input::file('file'); 
if (!File::exists(storage_path('uploads/'.$destinationPath))) { 
    File::makeDirectory(storage_path('uploads/'.$destinationPath), 0755, true); 
} 
Storage::disk('uploads')->putFileAs($destinationPath, $file, $file->getClientOriginalName()); 

か::これは

+0

これは私のモデルにも反映されますか? – cvassios

+0

デザインパターンに応じて、どこにでも配置できます。ファサードはどこからでもアクセスできます。ただし、ライトイルミネーション\サポート\ファサード\ファイル;例えば – abr

関連する問題