ijin82 / flysystem-azure
Laravel 5.* 的 Windows Azure 适配器(league/flysystem-azure 的分支)
1.0.7.1
2018-02-26 13:09 UTC
Requires
- php: >=5.5.0
- league/flysystem: ~1.0
- microsoft/azure-storage-blob: ^1.0
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
README
Azure Blob 专用文件系统,用于 Laravel 5
此仓库是 League\Flysystem\Azure 的分支
为什么要分支?
需要与 L5 无缝集成,并为 Storage 接口提供 url 方法
以下所有示例都与 L5 相关。
如何在 Laravel 5 应用程序中安装
安装包
composer require ijin82/flysystem-azure
打开 config/app.php 并将以下内容添加到 providers 部分
Ijin82\Flysystem\Azure\AzureBlobServiceProvider::class,
打开 config/filesystems.php 并将以下内容添加到 disks 部分
'my_azure_disk1' => [
'driver' => 'azure_blob',
'endpoint' => env('AZURE_BLOB_STORAGE_ENDPOINT'),
'container' => env('AZURE_BLOB_STORAGE_CONTAINER1'),
'blob_service_url' => env('AZURE_BLOB_SERVICE_URL'),
],
打开您的 .env 并为您的磁盘添加变量
AZURE_BLOB_SERVICE_URL={your-blob-service-url}
AZURE_BLOB_STORAGE_ENDPOINT="DefaultEndpointsProtocol=https;AccountName={your-account-name};AccountKey={your-account-key};"
AZURE_BLOB_STORAGE_CONTAINER1={your-container-name}
- 您可以从存储账户设置的 属性 部分获取 AZURE_BLOB_SERVICE_URL 变量。这是一个名为 PRIMARY BLOB SERVICE ENDPOINT 或 SECONDARY BLOB SERVICE ENDPOINT 的 URL
- 您可以从存储账户设置的 访问密钥 部分获取 AZURE_BLOB_STORAGE_ENDPOINT 变量。这被称为 CONNECTION STRING
- AZURE_BLOB_STORAGE_CONTAINER1 是您预先创建的容器名称,您可以在存储账户设置的 概览 部分中添加。
如何上传文件
public function someUploadFuncName(Request $request) { $file = $request->file('file_name_from_request'); // .. file name logic // .. file folder logic $file->storeAs($fileFolder, $fileName, [ 'disk' => 'my_azure_disk1' ]); // save file name logic // to create file URL by name later // maybe you want to save file name and folder separated $fileNameToSave = $folderName . '/' . $diskFileName; // .. save file name to DB or etc. }
如何获取文件 URL
我们获取了所选磁盘的文件名(如果存在文件夹,则相关文件夹)
echo Storage::disk('my_azure_disk1')->url($fileName);
这也可以在 blade 模板中工作,如下所示
<a href="{{ Storage::disk('my_azure_disk1')->url($fileName) }}"
target="_blank">{{ $fileName }}</a>
如何删除文件
public function someDeleteFuncName($id) { $file = SomeFileModel::findOrFail($id); Storage::disk('my_azure_disk1')->delete($file->name); $file->delete(); // go back or etc.. }
Mimetypes(这可能很有用)
有时您需要手动设置 mime 类型(可能是为了 CDN)以获取正确的 mime 类型值。您可以这样做(例如,强制设置一些类型)
$fileConents = Storage::disk('public_or_another_local_disk')->get($file); $forcedMimes = [ 'js' => 'application/javascript', 'json' => 'application/json', ]; $fileExt = \File::extension($file); if (array_key_exists($fileExt, $forcedMimes)) { $fileMime = $forcedMimes[$fileExt]; } else { $fileMime = mime_content_type(Storage::disk('public_or_another_local_disk')->path($file)); } Storage::disk('my_custom_azure_disk')->put($fileName, $fileConents, [ 'mimetype' => $fileMime, ]);
您可以使用 wget 获取包含 Content-Type 头的响应
wget -S https://your-file-host.com/file-name.jpg
补充
- 原始仓库在此:这里
- 如何从 PHP 使用 Blob 存储
- Flysystem azure 适配器
- 请随意发送 pull 请求和问题。