UmbracoFileSystemProviders.Azure, Umbraco的Azure Blob存储IFileSystem提供程序

分享于 

12分钟阅读

GitHub

  繁體 雙語
An Azure Blob Storage IFileSystem provider for Umbraco 6.25+.
  • 源代码名称:UmbracoFileSystemProviders.Azure
  • 源代码网址:http://www.github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure
  • UmbracoFileSystemProviders.Azure源代码文档
  • UmbracoFileSystemProviders.Azure源代码下载
  • Git URL:
    git://www.github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure.git
    Git Clone代码到本地:
    git clone http://www.github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azure
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    UmbracoFileSystemProviders.Azure

    Image Alt

    Build status

    一个 Azure Blob存储,用于 Umbraco 7.1.9 +的IFileSystem提供程序。 用于将媒体部分中的static 文件卸载到云。

    这个软件包允许使用 Blob存储来替换媒体项目,同时保留使用 Azure Blob存储的媒体项,同时保留文件的相对路径,同时保留后台文件中所需的文件。

    安装

    NuGet和Umbraco软件包均可用。 如果你使用的是 Umbraco,但是你可以先安装Umbraco包,然后安装该配置。

    NuGet软件包版本
    ReleaseNuGet download
    预先发布MyGet download
    Umbraco软件包
    ReleaseOur Umbraco project page
    预先发布AppVeyor Artifacts

    手动生成

    如果你愿意,你可以自己编译 UmbracoFileSystemProviders.Azure,你需要:

    • Visual Studio 2015 ( 或者上)

    在本地克隆它单击上面的"在 Windows 中克隆"按钮或者运行以下git命令。

    git clone https://github.com/JimBobSquarePants/UmbracoFileSystemProviders.Azurecd UmbracoFileSystemProviders.Azure
    .build.cmd

    在临时代码评审和请求请求中,最受欢迎 !

    用法

    注意:发布时,大多数配置将自动完成。

    更新 ~/Config/FileSystemProviders.config 使用以下方法替换默认提供程序:

    <?xml version="1.0"?>
    <FileSystemProviders>
     <Provideralias="media"type="Our.Umbraco.FileSystemProviders.Azure.AzureBlobFileSystem, Our.Umbraco.FileSystemProviders.Azure">
     <Parameters>
     <addkey="containerName"value="media"/>
     <addkey="rootUrl"value="http://[myAccountName].blob.core.windows.net/"/>
     <addkey="connectionString"value="DefaultEndpointsProtocol=https;AccountName=[myAccountName];AccountKey=[myAccountKey]"/>
     <!-- Optional configuration value determining the maximum number of days to cache items in the browser. Defaults to 365 days.--> <addkey="maxDays"value="365"/>
     <!-- When true this allows the VirtualPathProvider to use the default"media" route prefix regardless  of the container name.--> <addkey="useDefaultRoute"value="true"/>
     <!-- When true blob containers will be private instead of public what means that you can't access the original blob file directly from its blob url.--> <addkey="usePrivateContainer"value="false"/>
     </Parameters>
     </Provider>
    </FileSystemProviders>

    使用 Azure存储 模拟器 插件进行开发模式配置的步骤如下:

    <?xml version="1.0"?>
    <FileSystemProviders>
     <Provideralias="media"type="Our.Umbraco.FileSystemProviders.Azure.AzureBlobFileSystem, Our.Umbraco.FileSystemProviders.Azure">
     <Parameters>
     <addkey="containerName"value="media"/>
     <addkey="rootUrl"value="http://127.0.0.1:10000/devstoreaccount1/"/>
     <addkey="connectionString"value="UseDevelopmentStorage=true"/>
     </Parameters>
     </Provider>
    </FileSystemProviders>

    此外,还可以在 web.config 中使用以下应用程序设置进一步配置提供程序。

    <?xml version="1.0"?>
    <configuration>
     <appSettings>
     <!--Disables the built in Virtual Path Provider which allows for relative paths--> <addkey="AzureBlobFileSystem.DisableVirtualPathProvider"value="true"/>
     <!-- Enables the development mode for testing. Addition changes to the FileSystemProviders.config are also required--> <addkey="AzureBlobFileSystem.UseStorageEmulator"value="true"/>
     </appSettings>
    </configuration>

    通过 Web.Config 进行的配置

    在 v0.5.4 + 中可用的

    可以选择在 FileSystemProviders.config 中替代 Having,它可以被移动到 web.config

    FileSystemProviders.config 中删除默认参数并使用密钥 alias 添加新的参数,该值应与提供程序别名匹配

    <?xml version="1.0"?>
    <FileSystemProviders>
     <!-- Media --> <Provideralias="media"type="Our.Umbraco.FileSystemProviders.Azure.AzureBlobFileSystem, Our.Umbraco.FileSystemProviders.Azure">
     <Parameters>
     <addkey="alias"value="media"/>
     </Parameters>
     </Provider>
    </FileSystemProviders>

    web.config 中创建新的应用程序密钥,并在冒号后用 FileSystemProviders.config 定义的alias 修复每个键。

    <addkey="AzureBlobFileSystem.ConnectionString:media"value="DefaultEndpointsProtocol=https;AccountName=[myAccountName];AccountKey=[myAccountKey]"/>
    <addkey="AzureBlobFileSystem.ContainerName:media"value="media"/>
    <addkey="AzureBlobFileSystem.RootUrl:media"value="http://[myAccountName].blob.core.windows.net/"/>
    <addkey="AzureBlobFileSystem.MaxDays:media"value="365"/>
    <addkey="AzureBlobFileSystem.UseDefaultRoute:media"value="true"/>
    <addkey="AzureBlobFileSystem.UsePrivateContainer:media"value="false"/>

    虚拟路径提供程序

    默认情况下,插件将从你的域透明地提供文件,或者直接从Azure服务媒体。 可以通过使用定制的虚拟路径提供程序( 包括并在应用程序启动时自动初始化) 来实现这一点。 这可以通过添加上面提到的配置设置来禁用。

    注意:由于进程与iis非托管处理程序的进程不同,虚拟路径提供者可能会影响性能/缓存,这取决于你的安装过程。 通过提供程序发送的虚拟文件被正确缓存在浏览器中,因此这不应该是一个问题。 如果你的网站预编译站点或者在的虚拟目录/应用程序目录中使用,则VVP提供程序也不会工作。

    你的web.config 中需要以下配置才能在 IIS Express中启用 static 文件映射。

    <?xml version="1.0"?>
     <configuration>
     <locationpath="Media">
     <system.webServer>
     <handlers>
     <removename="StaticFileHandler"/>
     <addname="StaticFileHandler"path="*"verb="*"preCondition="integratedMode"type="System.Web.StaticFileHandler"/>
     </handlers>
     </system.webServer>
     </location>
     </configuration>

    For英镑,你必须将 StaticFileHandler 添加到 Media 文件夹中的新 Web.Config,而不是 root 一个或者VPP不能工作 !

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
     <system.webServer>
     <handlers>
     <clear/>
     <addname="StaticFileHandler"path="*"verb="*"preCondition="integratedMode"type="System.Web.StaticFileHandler"/>
     <addname="StaticFile"path="*"verb="*"modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"resourceType="Either"requireAccess="Read"/>
     </handlers>
     </system.webServer>
    </configuration>

    与ImageProcessor结合

    从 ImageProcessor.Web 版本 4.3.2开始,一个新的IImageService 实现已经被调用 CloudImageService。 要启用该服务并直接从云中提取图像,只需安装配置软件包插件,并用以下命令替换设置:

    <?xml version="1.0"?>
    <security>
     <services>
     <servicename="LocalFileImageService"type="ImageProcessor.Web.Services.LocalFileImageService, ImageProcessor.Web"/>
     <serviceprefix="media/"name="CloudImageService"type="ImageProcessor.Web.Services.CloudImageService, ImageProcessor.Web">
     <settings>
     <settingkey="MaxBytes"value="8194304"/>
     <settingkey="Timeout"value="30000"/>
     <settingkey="Host"value="http://[myAccountName].blob.core.windows.net/media/"/>
     </settings>
     </service>
     </services> 
    </security>

    注意:使用 private 存储时,CloudImageService 不与FileSystemProvider兼容。 你必须构建自己的IImageService 实现。

    如果使用版本 ImageProcessor.Web 版本 4.5.0,则需要按如下方式配置配置详细信息:

    <?xml version="1.0"?>
    <security>
     <services>
     <servicename="LocalFileImageService"type="ImageProcessor.Web.Services.LocalFileImageService, ImageProcessor.Web"/>
     <serviceprefix="media/"name="CloudImageService"type="ImageProcessor.Web.Services.CloudImageService, ImageProcessor.Web">
     <settings>
     <settingkey="Container"value="media"/>
     <settingkey="MaxBytes"value="8194304"/>
     <settingkey="Timeout"value="30000"/>
     <settingkey="Host"value="http://[myAccountName].blob.core.windows.net/media"/>
     </settings>
     </service>
     </services> 
    </security>

    一定要安装 AzureBlobCache插件插件以最大限度地利用包。

    作者

    • James jackson
    • Seefeld
    • lars Aabech
    • Jeavon Leopold

    谢谢

    • 这篇文章提供了灵感和一些时髦的单元测试代码,这是Elijah提供的。

    存储  Provider  Azure  BLOB  Umbraco  
    相关文章