我需要能够在磁盘上打开文件,但是通过查询字符串将参数传递给该文件。这是一个.SWF文件,所以我传入了必要的参数来正确加载。
我正在使用的代码是:
FileStream fs = new FileStream(@"C:\test\file.swf?key=value", FileMode.Open, FileAccess.Read);
我在打开文件时遇到错误:“路径中的字符无效”,因为“?”在文件名中。有没有办法使用文件名中的查询字符串将文件从磁盘加载到FileStream对象?
答案 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);
}