将文件从Laravel上载到azure blob存储
我的任务是用Vue.js(惯性)维护一个Laravel项目(这两个方面我都不是很有经验)。现在我们需要将主机切换到Azure,我被文件存储卡住了。具体来说,我不知道如何将文件从Laravel上传到Blob。我已经在使用这是一种方便的方式来连接驱动程序 我在filesystem.php中的驱动程序(详细信息正确): 我的控制器:将文件从Laravel上载到azure blob存储,laravel,azure,azure-blob-storage,inertiajs,Laravel,Azure,Azure Blob Storage,Inertiajs,我的任务是用Vue.js(惯性)维护一个Laravel项目(这两个方面我都不是很有经验)。现在我们需要将主机切换到Azure,我被文件存储卡住了。具体来说,我不知道如何将文件从Laravel上传到Blob。我已经在使用这是一种方便的方式来连接驱动程序 我在filesystem.php中的驱动程序(详细信息正确): 我的控制器: $url = request()->file->store('azure'); 请帮忙 根据我的测试,我们应该在.evn中使用双引号来扩展访问密钥 比如说
$url = request()->file->store('azure');
请帮忙 根据我的测试,我们应该在
.evn
中使用双引号来扩展访问密钥
比如说
.env
文件中谢谢@Jim Xu,他测试了您示例中的逻辑,效果非常好。 如果有人偶然发现了这一点,默认情况下azure blob容器是私有的。
要为您的Laravel应用程序公开提供文件或图像,不要忘记将容器的访问级别更改为Blob或container欢迎使用SO。。它是
base64
image吗?请尝试使用代码:store(“”,'azure')
:不,它不是base64 img。我没有尝试将其存储在数据库中,而是将其存储在Azure中的Storage explorer中。我试着指定磁盘。这对我不起作用。我测试了将blob的URL作为和根(/)提供。这两个选项都不起作用。现在我注意到我在网络上得到一个状态:500,表示:“提供的帐户密钥“”不是有效的base64字符串。它必须通过“base64_decode(,true)”检查。”。有什么想法吗?@brpetrov你能告诉我你是如何得到一个帐户密钥的吗?非常感谢!这看起来像是做这件事的方式!我需要推迟几天,但我会尽快告诉你。要问的一件事是:在azure存储->CORS->您应该允许允许访问它的源(域)。您是创建了要测试的域还是在localhost中创建的?我在某个地方读到你的应用程序将无法访问它,除非你指定它的域。@brpetrov。我在本地主机上测试了它,对我来说没问题。@jimXu它显示“驱动程序[azure]不受支持”。你能帮助我吗?这应该是对@Jim Xu答案的评论。@Robson抱歉,我的声誉水平还没有达到50,所以我无法对其他答案发表评论
$url = request()->file->store('azure');
AZURE_STORAGE_NAME=<account name>
AZURE_STORAGE_KEY="<account key>"
AZURE_STORAGE_CONTAINER=
AZURE_STORAGE_URL=https://<account name>.blob.core.windows.net/
'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.')
}
}