FileStream с строкой запроса в имени файла? - PullRequest
0 голосов
/ 07 апреля 2011

У меня должна быть возможность открыть файл на диске, но передать параметры этому файлу через строку запроса. Это файл .SWF, поэтому я передаю параметр, необходимый для правильной загрузки.

Код, который я использую для этого:

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

Я получаю сообщение об ошибке при открытии файла: "Недопустимые символы в пути" из-за "?" в имени файла. Есть ли способ загрузить файл с диска в объект FileStream, используя строку запроса в имени файла?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Я думаю, вы не можете делать то, что пытаетесь сделать.Когда вы загружаете файл с диска, строка запроса не существует как концепция.Он будет возвращать только байты, содержащиеся в SWF-файле.

Строка запроса имеет значение на уровне выполнения.

0 голосов
/ 07 апреля 2011

Итак, я решил эту проблему, разместив два SWF-файла на веб-сервере и используя следующий код. Не совсем готовый код, но он иллюстрирует концепцию.

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);
}
...