当前位置: 首页 > 知识库问答 >
问题:

尝试在Laravel中使用Azure存储模拟器

狄阳秋
2023-03-14

我试图在Laravel 5.8中实现Azure存储模拟器

它在Azure dev上工作

"message": "Fail:\nCode: 403\nValue: Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\ndetails (if any): .",
    "exception": "MicrosoftAzure\\Storage\\Common\\Exceptions\\ServiceException",
    "file": "C:\\Code\\web-portal-laravel\\vendor\\microsoft\\azure-storage-common\\src\\Common\\Internal\\ServiceRestProxy.php",

与公共和私有文件夹一样,我们试图将其实现为存储磁盘。我们认为只需使用相同类型的条目-而是使用. env文件中的共享密钥凭据就可以工作:

    AZURE_STORAGE_URL_EMU = "http://127.0.0.1:10000/devstoreaccount1/local"
    AZURE_STORAGE_KEY_EMU = 
        "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=="
    AZURE_STORAGE_ACCOUNT_EMU = "devstoreaccount1"
    AZURE_STORAGE_CONTAINER_EMU = "local"

存储资源管理器已安装,可以查看Blob、队列和表。并且模拟器的状态报告:

    Windows Azure Storage Emulator 5.10.0.0 command line tool
    IsRunning: True
    BlobEndpoint: http://127.0.0.1:10000/
    QueueEndpoint: http://127.0.0.1:10001/
    TableEndpoint: http://127.0.0.1:10002/

我不知道什么样的授权头可以让它工作。

我们正在使用matthewbdaly/laravel azure存储插件。

共有1个答案

严天逸
2023-03-14

根据官方文档<code>使用Azure存储模拟器进行开发和测试

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

在我查看了源代码<code>src/AzureStorageServiceProvider之后。php的<code>matthewbdaly/laravel azure存储

所以如果不改变插件的任何代码,将< code > config/file systems . PHP 文件配置为插件repo所说的< code>README的内容的解决方法如下。

'azure' => [
        'driver'    => 'azure',
        'name'      => 'devstoreaccount1',
        'key'       => 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;',
        'container' => env('AZURE_STORAGE_CONTAINER'),
        'url'       => env('AZURE_STORAGE_URL'),
        'prefix'    => null,
],

然后,仿真器连接字符串可以由上面的key值与字符串模板code'DefaultEndpoint sProtocol=https; Account tName=%s; Account tKey=%s'正确补充。

 类似资料:
  • 有人能指导我如何在JavaSDK中模拟Azure Blob存储。 我想模拟连接字符串、SAS令牌、endpoint、容器名称。如果所有这些都得到了模拟,那么模拟BlobClient就很容易了。 参考代码是- public BlobServiceClient BlobServiceClient(){return new BlobServiceClientBuilder().connectionStr

  • 我试图存储多个数据到我的数据透视表。我有分类用户表category_id和user_id。这是我的店铺功能。 在blade中,我有name=“categoryId[]”和name=“userId[]”。但它只存储一个类别id。我做错了什么?

  • 我正在尝试学习存储库模式,似乎有点困惑,当我急于加载关系并将db逻辑排除在控制器之外时,如何使用此存储库模式。 快速概述我的存储库/应用程序结构。 示例ProductInterface。php 示例类别接口。php 好的,最简单的部分是使用DI向控制器注入模型依赖关系。 列出与相关产品的所有类别更加困难,因为我不再使用雄辩的模型。我正在使用一个界面,它没有暴露所有雄辩的方法。 如果我没有在我的El

  • 我正在使用laravel创建我的网站。我正在使用xampp,但无法将网站连接到服务器。。我得到以下错误。有人能帮忙吗?顺便说一下,我正在使用mac。 找不到对象!在此服务器上找不到请求的URL。如果您手动输入URL,请检查拼写并重试。 如果您认为这是服务器错误,请联系网站管理员。 错误404localhostApache/2.4.41(Unix)OpenSSL/1.1.1c PHP/7.3.9mo

  • 我有一个问题与存根我的存储库。有人建议我只创建另一个application.properties(我没有这样做),并使用像H2这样的内存数据库。不过,我想知道我是否可以只是存根调用,这样当调用MyDataService.FindById(id)而不是试图从数据库中获取它时,就可以返回一个模拟对象?

  • C:\users\asd\appdata\local\android\sdk\tools\emulator.exe-avd Nexus_5_API_21_x86-netspeed full-netdelay none创建文件系统并使用参数:大小:69206016块大小:4096块/组:32768 Inode/组:4224 Inode大小:256日志块:1024标签:块:16896块组:1保留块组大