在Flash Media Server中使用VirtualDirectory进行流和FileObjects

时间:2012-10-18 15:14:19

标签: flash flash-media-server

我有一个应用程序,不是将其流保存在其应用程序目录中,而是通过在我的application.xml中使用以下内容来保存其他地方:

<Application>
<StreamManager>
    <VirtualDirectory>
          <!-- Specifies application specific virtual directory mapping for streams.   -->
        <Streams>/;C:\pathtomystreams</Streams>
    </VirtualDirectory>
</StreamManager>
</Application>

这很好用。 现在,我要做的是获取该目录中的流列表。我知道如何做的唯一方法是使用File对象,创建我的streams文件夹的File对象,然后调用File.list()。

Adob​​e帮助提到我也可以将虚拟目录用于File对象: http://livedocs.adobe.com/flashmediaserver/3.0/hpdocs/index.html

<FileObject>
    <VirtualDirectory>/;C:\pathtomystreams</VirtualDirectory>
</FileObject>

Adob​​e帮助在这里没有提到应该嵌套FileObject标记的位置,但是在vHosts Application.xml中查看它指出它应该在Application / ScriptEngine中。 我还在vHosts Application.xml中将FileObject元素的override属性设置为“yes”。

但我没有找到正确的道路。当我在main.asc中编写这样的代码时:

var f = new File("/mystream.flv");
trace(f.toString());

生成的跟踪读取 C:\\ mystream.flv 而不是 C:\ pathtomystreams \ mystream.flv 有趣的是,它也忽略了我可能添加到vHosts Application.xml

中的任何VirtualPath

可能有一些我缺少的配置设置。 有没有人知道我在这里可能缺少什么,或者我做错了什么?

1 个答案:

答案 0 :(得分:2)

我忽略了Server.xml中的另一个配置设置:

<Root> 
    <Server> 
        <Security> 
            <!-- This is disabled by default. -->
            <VirtualDirectoryForFile enable="true"/>
        </Security>
    </Server>
<Root>

必须启用元素VirtualDirectoryForFile才能使其正常工作。 因此,您必须确保在vHost.xml中将override属性设置为true,并确保将Server.xml中VirtualDirectorForFile上的enable属性设置为true。