文件上傳 案例
1、配置
配置文件在 config/filesystems.php
<?php return [ /* |-------------------------------------------------------------------------- | Default Filesystem Disk |-------------------------------------------------------------------------- | | Here you may specify the default filesystem disk that should be used | by the framework. The "local" disk, as well as a variety of cloud | based disks are available to your application. Just store away! | */ 'default' => env('FILESYSTEM_DRIVER', 'local'), /* |-------------------------------------------------------------------------- | Default Cloud Filesystem Disk |-------------------------------------------------------------------------- | | Many applications store files both locally and in the cloud. For this | reason, you may specify a default "cloud" driver here. This driver | will be bound as the Cloud disk implementation in the container. | */ 'cloud' => env('FILESYSTEM_CLOUD', 's3'), /* |-------------------------------------------------------------------------- | Filesystem Disks |-------------------------------------------------------------------------- | | Here you may configure as many filesystem "disks" as you wish, and you | may even configure multiple disks of the same driver. Defaults have | been setup for each driver as an example of the required options. | | Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace" | */ 'disks' => [ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), ], 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public/img'),//文件真實位置 'url' => env('APP_URL').'/storage', 'visibility' => 'public', ], 's3' => [ 'driver' => 's3', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), 'url' => env('AWS_URL'), ], ], ];
2、代碼實現php
控制器:
public function Upload(Request $request){//文件上傳 $file= $request->file('file');//獲取文件 if ($file->isValid()){ $ext = $file->getClientOriginalExtension();//獲取文件的後綴名 $path = $file->getRealPath();//獲取文件的 絕對路徑 $filename = date('Y-m-d-h-i-s').'.'.$ext;//定義一個文件名 Storage::disk('public')->put($filename,file_get_contents($path));//移動文件 } }
視圖層:
<div> <img class="img" src="{{asset('storage/img/文件名')}}">{{--這裏路徑和配置文件裏對應--}} </div
文件的上傳表單:
<form method="post" enctype="multipart/form-data" > <input type="file" name="file"> <button type="submit"> 提交 </button> </form>
這裏用到了軟鏈接須要在命令行輸入:artisan storage:link