我正在使用File.OpenRead方法读取文件,我正在给出这条路径
http://localhost:10001/MyFiles/folder/abc.png
我也试过这个,但没有运气
http://localhost:10001//MyFiles//abc.png
但它的给予
不支持网址格式
当我像这样给我的驱动器的物理路径时,它工作正常 d:\ MyFolder文件\ MyProject的\ MYFILES \文件夹\ abc.png
如何将文件路径提供给Http路径?
这是我的代码
public FileStream GetFile(string filename)
{
FileStream file = File.OpenRead(filename);
return file;
}
答案 0 :(得分:7)
查看WebClient
(MSDN docs),它有许多实用方法可以从网上下载数据。
如果您希望资源为Stream
,请尝试:
using(WebClient webClient = new WebClient())
{
using(Stream stream = webClient.OpenRead(uriString))
{
using( StreamReader sr = new StreamReader(stream) )
{
Console.WriteLine(sr.ReadToEnd());
}
}
}
答案 1 :(得分:3)
您可以按照其他答案中的建议使用WebClient,也可以像这样获取相对路径:
var url = "http://localhost:10001/MyFiles/folder/abc.png";
var uri = new Uri(url);
var path = Path.GetFileName(uri.AbsolutePath);
var file = GetFile(path);
// ...
一般来说,你应该摆脱绝对的URL。
答案 2 :(得分:2)
下载HTML的最佳方法是使用WebClient类。你这样做:
private string GetWebsiteHtml(string url)
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string result = reader.ReadToEnd();
stream.Dispose();
reader.Dispose();
return result;
}
然后,如果你想进一步处理HTML到ex。提取图像或链接,您将需要使用称为HTML报废的技术。
目前最好使用HTML Agility Pack。
此外,有关WebClient类的文档:MSDN
答案 3 :(得分:1)
Here我找到了这个片段。可能完全符合你的需要:
using(WebClient client = new WebClient()) {
string s = client.DownloadFile(new Uri("http://.../abc.png"), filename);
}
它使用WebClient
类。
答案 4 :(得分:0)
要将 file:// URL 转换为 UNC 文件名,您应该使用 Uri.LocalPath
属性 as documented。
换句话说,你可以这样做:
public FileStream GetFile(string url)
{
var filename = new Uri(url).LocalPath;
FileStream file = File.OpenRead(filename);
return file;
}