Как открыть поток контента WPF? - PullRequest
2 голосов
/ 19 мая 2010

Вот фрагмент кода

String str= ??????? // I want to assign c:/my/test.html to this string
Uri uri= new Uri (str);
Stream src = Application.GetContentStream(uri).Stream;

Какой правильный способ сделать это? Я получаю "URI не относительный"

Ответы [ 4 ]

2 голосов
/ 19 мая 2010

Ваша проблема относится к WPF. См. Метод Application.GetContentStream.

Вы прочтете, что этот метод требует относительного URI. См. « Файлы приложений, ресурсов, содержимого и данных WPF ».

1 голос
/ 19 мая 2010

У вас есть путь к файлу - если вы хотите сделать его URI, добавьте «file: ///», т.е. "Файл: /// C: /my/test.html"

0 голосов
/ 19 мая 2010

Я думаю, вы обнаружите, что ваша проблема в том, что Application.GetContentStream предназначен для потока ресурсов для файла данных content , который расположен в указанном Uri. То есть развернут вместе с исполняемой сборкой.

Если вы посмотрите на: http://msdn.microsoft.com/en-us/library/aa970494(VS.90).aspx#Site_of_Origin_Files

Вы должны обнаружить, что синтаксис file: ///, как указано выше, является правильным ... Но если вы собираетесь открыть их, вам, вероятно, понадобится какой-то переключатель, чтобы выяснить, как получить поток:

FileInfo fileToSave;
if (!existingFile.IsFile)
    throw new ArgumentException("Input URI must represent a local file path", "existingFile");

fileToSave = new FileInfo(existingFile.LocalPath);
return fileToSave.Open(/* Args based on your needs */)

И аналогично, если это веб-URI:

if (!existingFile.Scheme.StartsWith("http"))
    throw new ArgumentException("Input URI must represent a remote URL path", "existingFile");
// Do a WebRequest.Create call and attempt download... (Perhaps to MemoryStream for future use)

Надеюсь, это поможет.

Эндрю.

0 голосов
/ 19 мая 2010

Для локальных файловых URI вам необходимо добавить префикс:

file:///
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...