将文件从Laravel上传到Azure Blob存储

46qrfjad  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(242)

我接到一个任务,用Vue.js(inertia)维护一个Laravel项目(对这两个项目都不是很有经验)。现在我们需要将主机切换到Azure,我被文件存储卡住了。具体来说,我不确定如何将文件从Laravel上传到Blob。我已经在使用https://github.com/matthewbdaly/laravel-azure-storage,这是一种连接驱动程序的方便方法。
我的驱动程序在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');

救命啊!

brccelvz

brccelvz1#

根据我的测试,我们应该使用双引号来扩展.evn中的访问密钥。
比如说
1.将此添加到.env文件中

AZURE_STORAGE_NAME=<account name>
AZURE_STORAGE_KEY="<account key>"
AZURE_STORAGE_CONTAINER=
AZURE_STORAGE_URL=https://<account name>.blob.core.windows.net/

1.将以下内容添加到config/filesystems.phpdisks部分:

'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,
        ],

1.上传代码

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.')

        }
   }

第一次

xdnvmnnf

xdnvmnnf2#

感谢@Jim Xu,测试了您示例中的逻辑,它运行得很好。如果有人偶然发现了这一点,默认情况下Azure blob容器是私有的。要为您的Laravel应用公开提供文件或图像,不要忘记将容器的访问级别更改为Blob或Container

相关问题