开发者

How to open a WPF Content Stream?

Here's the code snippet

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

Wha开发者_运维知识库t's the correct way to do this? I'm getting "URI not relative" Exception thrown


Your problem is specific to WPF. See the Application.GetContentStream method.

You'll read that this method requires a relative URI. See "WPF Application, Resource, Content and Data files".


You have a file path - if you want to make it a URI add "file:///", ie. "file:///c:/my/test.html"


For local file URIs, you need to prefix it with:

file:///


I think you'll find your problem is that Application.GetContentStream is for a resource stream for a content data file that is located at the specified Uri. That is, deployed alongside an executable assembly.

If you look at: http://msdn.microsoft.com/en-us/library/aa970494(VS.90).aspx#Site_of_Origin_Files

You should find that the file:/// syntax as stated above is correct... But if you're going to open them you'll probably want some kind of switch to work out how to get the stream:

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 */)

And similarly if it's a web 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)

Hope that helps.

Andrew.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜