将文件从 Laravel 上传到 Azure Blob 存储
uploading files from Laravel to azure blob storage
我的任务是维护一个 Vue.js(惯性)的 Laravel 项目(两者都不太有经验)。现在我们需要将主机切换到 Azure,我被困在文件存储上。具体来说,我不确定 如何将文件从 Laravel 上传到 Blob。我已经在使用 https://github.com/matthewbdaly/laravel-azure-storage,这是连接 driver.
的便捷方式
我的driver在filesystem.php(细节正确):
'azure' => [
'driver' => 'azure',
'name' => env('AZURE_STORAGE_NAME'),
'key' => env('AZURE_STORAGE_KEY'),
'container' => env('AZURE_STORAGE_CONTAINER'),
'url' => env('AZURE_STORAGE_URL'),
'prefix' => null,
],
我的控制器:
$url = request()->file->store('azure');
请帮忙!
根据我的测试,我们应该使用双引号来扩展.evn
中的access key。
例如
- 将此添加到
.env
文件
AZURE_STORAGE_NAME=<account name>
AZURE_STORAGE_KEY="<account key>"
AZURE_STORAGE_CONTAINER=
AZURE_STORAGE_URL=https://<account name>.blob.core.windows.net/
- 将此添加到
config/filesystems.php
的 disks
部分:
'azure' => [
'driver' => 'azure',
'name' => env('AZURE_STORAGE_NAME'),
'key' => env('AZURE_STORAGE_KEY'),
'container' => env('AZURE_STORAGE_CONTAINER'),
'url' => env('AZURE_STORAGE_URL'),
'prefix' => null,
],
- 上传代码
public function fileUpload(Request $req){
$req->validate([
'file' => 'required|mimes:csv,txt,xlx,xls,pdf|max:2048'
]);
if($req->file()) {
$fileName = time().'_'.$req->file->getClientOriginalName();
// save file to azure blob virtual directory uplaods in your container
$filePath = $req->file('file')->storeAs('uploads/', $fileName, 'azure');
return back()
->with('success','File has been uploaded.')
}
}
感谢@Jim Xu,测试了您示例中的逻辑,效果很好。
如果有人偶然发现了这一点,默认情况下 azure blob 容器是私有的。
要为您的 Laravel 应用公开提供文件或图像,不要忘记将容器的访问级别更改为 Blob 或 Container
我的任务是维护一个 Vue.js(惯性)的 Laravel 项目(两者都不太有经验)。现在我们需要将主机切换到 Azure,我被困在文件存储上。具体来说,我不确定 如何将文件从 Laravel 上传到 Blob。我已经在使用 https://github.com/matthewbdaly/laravel-azure-storage,这是连接 driver.
的便捷方式我的driver在filesystem.php(细节正确):
'azure' => [
'driver' => 'azure',
'name' => env('AZURE_STORAGE_NAME'),
'key' => env('AZURE_STORAGE_KEY'),
'container' => env('AZURE_STORAGE_CONTAINER'),
'url' => env('AZURE_STORAGE_URL'),
'prefix' => null,
],
我的控制器:
$url = request()->file->store('azure');
请帮忙!
根据我的测试,我们应该使用双引号来扩展.evn
中的access key。
例如
- 将此添加到
.env
文件
AZURE_STORAGE_NAME=<account name>
AZURE_STORAGE_KEY="<account key>"
AZURE_STORAGE_CONTAINER=
AZURE_STORAGE_URL=https://<account name>.blob.core.windows.net/
- 将此添加到
config/filesystems.php
的disks
部分:
'azure' => [
'driver' => 'azure',
'name' => env('AZURE_STORAGE_NAME'),
'key' => env('AZURE_STORAGE_KEY'),
'container' => env('AZURE_STORAGE_CONTAINER'),
'url' => env('AZURE_STORAGE_URL'),
'prefix' => null,
],
- 上传代码
public function fileUpload(Request $req){
$req->validate([
'file' => 'required|mimes:csv,txt,xlx,xls,pdf|max:2048'
]);
if($req->file()) {
$fileName = time().'_'.$req->file->getClientOriginalName();
// save file to azure blob virtual directory uplaods in your container
$filePath = $req->file('file')->storeAs('uploads/', $fileName, 'azure');
return back()
->with('success','File has been uploaded.')
}
}
感谢@Jim Xu,测试了您示例中的逻辑,效果很好。 如果有人偶然发现了这一点,默认情况下 azure blob 容器是私有的。 要为您的 Laravel 应用公开提供文件或图像,不要忘记将容器的访问级别更改为 Blob 或 Container