save() 使用原始名称文件

save() with Original name File

我有一些问题。 我需要使用原始名称而不是名称 FAJFJAKJ@$!@@!# 将我的文件保存到 storage/public/apps - 看起来像这样。

我错过了什么??

控制器

public function upload(Request $request)
{
    $request->file('file')->save('public/apps');

    return redirect()->back()->with('message', 'File Upload Successfully!');
}

web.php

Route::prefix('admin')->middleware('auth')->group(function(){
 Route::get('/', 'Admin\IndexController@index');
 Route::get('dashboard', 'Admin\IndexController@index')->name('dashboard');
 
 
 Route::get('upload-files', 'Admin\UploadController@index');
 Route::post('upload-files', 'Admin\UploadController@upload');
 
 
 Route::get('links', 'Admin\LinkController@index')->name('links');
 Route::get('links/create', 'Admin\LinkController@createUlr')->name('links.create');
 Route::post('links/create', 'Admin\LinkController@store')->name('links.store');
 Route::get('links/{id}', 'Admin\LinkController@linkById')->name('link.chose');
 Route::post('links/{id}', 'Admin\LinkController@update')->name('link.delete');
 Route::delete('links/{id}', 'Admin\LinkController@delete')->name('link.delete');
});

表格

<form class="col-lg-push-6" action="/admin/upload-files" method="POST" enctype="multipart/form-data">
  @csrf
  <div class="form-group bmd-form-group">
   <label class="bmd-label-floating">New File</label>
   <br>
   <br>
   <br>
   <input type="file" class="form-control" size="100" name="file">
  </div>
  <button  class="btn btn-primary" type="submit">Create</button>
 </form>

如果你想用原名上传文件,你可以使用 getClientOriginalName() 函数,它将 return 文件的原名,这里有一些代码可以帮助你将文件上传到您想要的位置,我强烈建议您将路径包装在 Variables.

public function upload(Request $request)
{
    $imageName = "{$request->file->getClientOriginalName()}.{$request->file->getClientOriginalExtension()}";
    $imagePath = "public/apps/{$imageName}";
    $request->file->move(public_path("public/apps"), $imageName);
}

每当在 Laravel 控制器中处理文件上传时,以下内容可能会有所帮助

public function store(Request $request)
{

    //Validate request data if there are other fields as well
    // do not include image fields in validation rules
    $validatedData = $request->validate($rules, $request->except('image'));

    //Check if $request has uploaded file and whether it's a valid file 
    if($request->hasFile('image') && $request->file('image')->isValid()) {
        //Custom name pattern as per application preference
        $filename = time() . '.' . $request->file('image')->extension();

        //Or - Get the original name of the uploaded file
        $filename = $request->file('image')->getClientOriginalName();

        //Store the file in desired directory and assign the path to the image field in validated data
        $validatedData['image'] = $request->file('image')->storeAs('images', $filename);
    }  

    //Fill the values from validatedData and save the record
    $model->fill($validatedData);
    $model->save();

}

这里可以看到如下:

<?php
use Illuminate\Http\Request;
//importing user model
use App\User;

class UploadImage
{
    function avatarUpload(Request $request)
    {


        $file = $request->file('avatar_img');
        //getting original name of file
        $fileName = $file->getClientOriginalName();
        $post = [
            'avatar_img'=> $fileName,
            'id'=> $request->user()->id
        ];
        //saving into database
        $create = User::create($post);
        if($create)
        {
            //store file, it will store in avatars folder inside app folder
            $store = $file->storeAs('avatars',$fileName);

            return $store ? 'Avatar image uploaded' : 'Avatar image store failed';
        }
        return 'Avatar image upload failed';        
    }   
}
?>