便捷的云存储
Laravel 5.2文件系统/云存储
现在可以获取本地公共文件。
1 | Storage::disk('local')->get(public_path().'/ファイル名'); |
设置Amazon S3驱动程序
在
confgi下的filesystems.php中设置访问密钥和存储桶名称。
由于无法进行可靠的书写,请从.env获取它。
config \\ filesystems.php
1 2 3 4 5 6 7 8 9 10 11 | 'cloud' => 's3', 'disks' => [ 's3' => [ 'driver' => 's3', 'key' => env('S3_ACCESS_KEY'), 'secret' => env('S3_SECRET_KEY'), 'region' => env('S3_REGION'), 'bucket' => env('S3_BUCKET'), ], ], |
使用composer.json
安装软件包
在composer.json和
中添加到require
composer.json
1 2 3 4 | "require": { "aws/aws-sdk-php": "~3.0", "league/flysystem-aws-s3-v3": "~1.0", } |
将驱动程序设置为S3并尝试获取文件
SampleController
1 2 | $file = Storage::disk('s3')->get('ファイルパス') return response()->download($file); |
结果:
可能是因为您试图下载文件内容的二进制字符串。
像这样
SampleController
1 2 3 4 5 6 7 8 9 10 | $result = Storage::disk('s3')->getAdapter()->getClient()->getObject(['Bucket' => 'バケット名', 'Key' => 'キー']); header('Content-Type: application/octet-stream'); $filename = '適当につけてください' header("Content-Disposition: attachment; filename={$filename}"); // これで指定したファイル名で自動的にダウンロードされる print($result['Body']); // 画面遷移させない場合はnullを返しておく return null; |
补充①让我们检查是否存在
它将返回为true / false。
补编(2)当您不知道要扩展的文件的扩展名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // これでMIMEが分かる $contentType = $result['ContentType']; // こんな感じで拡張子を返すメソッドを作っておくと便利 switch($contentType) { case 'image/png': return '.png'; case 'image/jpeg': return '.jpg'; case 'image/gif': return '.gif'; case 'application/pdf': return '.pdf'; default: return '.dat'; } |
▼参考
扩展名(内容类型)列表
MIME类型列表
补充③以当前日期和时间作为文件名
下载
1 2 3 | // 拡張子 $extension = '.png' $filename = strftime('%Y%m%d%H%M%S').$extension |
看起来像
20161027095602.png。