文件名中带有查询字符串的文件流

本文关键字:文件 字符串 查询 文件名 | 更新日期: 2023-09-27 17:49:27

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

我使用的代码是:

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

打开文件时出现错误:"路径中无效字符",因为文件名中有"?"。是否有任何方法从磁盘加载文件到FileStream对象使用文件名中的查询字符串?

文件名中带有查询字符串的文件流

我觉得你做不到你想做的事。当您从磁盘加载文件时,querystring作为一个概念不存在。它将只返回SWF文件中包含的字节。

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

所以我通过将两个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);
}