文件名中包含查询字符串的FileStream?

时间:2011-04-07 14:44:03

标签: c# file-io filestream

我需要能够在磁盘上打开文件,但是通过查询字符串将参数传递给该文件。这是一个.SWF文件,所以我传入了必要的参数来正确加载。

我正在使用的代码是:

FileStream fs = new FileStream(@"C:\test\file.swf?key=value", FileMode.Open, FileAccess.Read);

我在打开文件时遇到错误:“路径中的字符无效”,因为“?”在文件名中。有没有办法使用文件名中的查询字符串将文件从磁盘加载到FileStream对象?

2 个答案:

答案 0 :(得分:3)

我认为你不能做你想做的事。从磁盘加载文件时,查询字符串不作为概念存在。它只返回SWF文件中包含的字节。

查询字符串在执行级别很重要。

答案 1 :(得分:0)

所以我通过将两个SWF文件放在Web服务器上并使用以下代码解决了这个问题。不完全是生产就绪代码,但它说明了这个概念。

private static FileStream GetFileStream()
{
    string url = @"http://www.someurl.com/shell.swf?Filename=actualfile.swf";

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
    WebResponse response = request.GetResponse();

    byte[] result = null;
    int byteCount = Convert.ToInt32(response.ContentLength);
    using (BinaryReader reader = new BinaryReader(response.GetResponseStream()))
        result = reader.ReadBytes(byteCount);

    return new FileStream(result);
}