>> 上篇文章中说到,使用 Laravel 上传文件时,上传到七牛云存储的方法,本文介绍上传到 阿里云oss 的方法 ### 注册阿里云 1. 阿里云oss网址:[https://oss.console.aliyun.com](https://oss.console.aliyun.com "https://oss.console.aliyun.com"),注册成功后 新建Bucket。 2. 为了更好的使用,建议购买对象存储oss资源包,[https://common-buy.aliyun.com/?commodityCode=ossbag#/buy](https://common-buy.aliyun.com/?commodityCode=ossbag#/buy "https://common-buy.aliyun.com/?commodityCode=ossbag#/buy")。 3. 个人中心 Access Key管理 ,[创建key](https://ak-console.aliyun.com/#/accesskey "创建key")。 ### 安装阿里云扩展 本人在 [github](https://github.com/ "github") 上,查找了一番,找到一个很好和简单的扩展包 [Aliyun-oss-storage](https://github.com/jacobcyl/Aliyun-oss-storage "Aliyun-oss-storage") 。 1. `cd 项目根目录` 2. 执行 `composer require jacobcyl/ali-oss-storage:^2.1` 3. `config/app.php` 里面的 `providers` 数组, 加上一行 `Jacobcyl\AliOSS\AliOssServiceProvider::class` ### 修改配置文件 在 `config/backup.php` 修改配置 ```php [ /* * The name of this application. You can use this name to monitor * the backups. */ 'name' => 'backup', 'source' => [ 'files' => [ /* * The list of directories and files that will be included in the backup. */ 'include' => [ base_path(), ], /* * These directories and files will be excluded from the backup. * * Directories used by the backup process will automatically be excluded. */ 'exclude' => [ base_path('vendor'), base_path('node_modules'), storage_path('logs'), storage_path('framework\cache'), storage_path('framework\sessions'), storage_path('framework\views'), storage_path('debugbar'), ], /* * Determines if symlinks should be followed. */ 'followLinks' => false, ], /* * The names of the connections to the databases that should be backed up * MySQL, PostgreSQL, SQLite and Mongo databases are supported. * * The content of the database dump may be customized for each connection * by adding a 'dump' key to the connection settings in config/database.php. * E.g. * 'mysql' => [ * ... * 'dump' => [ * 'excludeTables' => [ * 'table_to_exclude_from_backup', * 'another_table_to_exclude' * ] * ] * ], * * For a complete list of available customization options, see https://github.com/spatie/db-dumper */ 'databases' => [ 'mysql', ], ], /* * The database dump can be gzipped to decrease diskspace usage. */ 'gzip_database_dump' => true, 'destination' => [ /* * The filename prefix used for the backup zip file. */ 'filename_prefix' => '', /* * The disk names on which the backups will be stored. */ 'disks' => [ 'oss', ], ], /* * The directory where the temporary files will be stored. */ 'temporary_directory' => storage_path('app/backup-temp'), ], /* * You can get notified when specific events occur. Out of the box you can use 'mail' and 'slack'. * For Slack you need to install guzzlehttp/guzzle. * * You can also use your own notification classes, just make sure the class is named after one of * the `Spatie\Backup\Events` classes. */ 'notifications' => [ 'notifications' => [ \Spatie\Backup\Notifications\Notifications\BackupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\UnhealthyBackupWasFound::class => ['mail'], \Spatie\Backup\Notifications\Notifications\CleanupHasFailed::class => ['mail'], \Spatie\Backup\Notifications\Notifications\BackupWasSuccessful::class => ['mail'], \Spatie\Backup\Notifications\Notifications\HealthyBackupWasFound::class => ['mail'], \Spatie\Backup\Notifications\Notifications\CleanupWasSuccessful::class => ['mail'], ], /* * Here you can specify the notifiable to which the notifications should be sent. The default * notifiable will use the variables specified in this config file. */ 'notifiable' => \Spatie\Backup\Notifications\Notifiable::class, 'mail' => [ 'to' => 'example@example.com', ], 'slack' => [ 'webhook_url' => '', /* * If this is set to null the default channel of the webhook will be used. */ 'channel' => null, 'username' => null, 'icon' => null, ], ], /* * Here you can specify which backups should be monitored. * If a backup does not meet the specified requirements the * UnHealthyBackupWasFound event will be fired. */ 'monitorBackups' => [ [ 'name' => 'backup', 'disks' => ['oss'], 'newestBackupsShouldNotBeOlderThanDays' => 1, 'storageUsedMayNotBeHigherThanMegabytes' => 5000, ], /* [ 'name' => 'name of the second app', 'disks' => ['local', 's3'], 'newestBackupsShouldNotBeOlderThanDays' => 1, 'storageUsedMayNotBeHigherThanMegabytes' => 5000, ], */ ], 'cleanup' => [ /* * The strategy that will be used to cleanup old backups. The default strategy * will keep all backups for a certain amount of days. After that period only * a daily backup will be kept. After that period only weekly backups will * be kept and so on. * * No matter how you configure it the default strategy will never * delete the newest backup. */ 'strategy' => \Spatie\Backup\Tasks\Cleanup\Strategies\DefaultStrategy::class, 'defaultStrategy' => [ /* * The number of days for which backups must be kept. */ 'keepAllBackupsForDays' => 7, /* * The number of days for which daily backups must be kept. */ 'keepDailyBackupsForDays' => 16, /* * The number of weeks for which one weekly backup must be kept. */ 'keepWeeklyBackupsForWeeks' => 8, /* * The number of months for which one monthly backup must be kept. */ 'keepMonthlyBackupsForMonths' => 4, /* * The number of years for which one yearly backup must be kept. */ 'keepYearlyBackupsForYears' => 2, /* * After cleaning up the backups remove the oldest backup until * this amount of megabytes has been reached. */ 'deleteOldestBackupsWhenUsingMoreMegabytesThan' => 5000, ], ], ]; ``` 在 `config/filesystems.php` 文件的 disks 下新增内容如下: 'oss' => [ 'driver' => 'oss', 'access_id' => env('OSS_ACCESS_ID'), //'', 'access_key' => env('OSS_ACCESS_KEY'), //'', 'bucket' => env('OSS_BUCKET'), //'', 'endpoint' => env('OSS_ENDPOINT'), //' OR your custom domain, E.g:img.abc.com', 'custom' => env('OSS_CUSTOM'), //' OR your custom domain, E.g:img.abc.com', 'ssl' => true, 'isCName' => false, // 'debug' => false, // ], Then set the default driver in app/filesystems.php: 'default' => 'oss', ### 使用 [Aliyun-oss-storage](https://github.com/jacobcyl/Aliyun-oss-storage "Aliyun-oss-storage") 的方法一边和 Laravel 的 store 方法一样,可以直接使用 上篇文章中写的方法,具体地址:[http://www.wangyd.com/post/141](http://www.wangyd.com/post/141 "http://www.wangyd.com/post/141") `Aliyun-oss-storage` 方法详细请查看:[Aliyun-oss-storage](https://github.com/jacobcyl/Aliyun-oss-storage "Aliyun-oss-storage")