错误“;不支持URI格式“-如何从网上提取图片
本文关键字:提取 取图片 不支持 URI 格式 错误 | 更新日期: 2023-09-27 18:19:28
我最近写了一段这样的代码:
protected void OpenImg_Click(object sender, EventArgs e)
{
int i = 0;
string PathToFolder = "C://LiveSite/img/XL/";
var dirInfo = new DirectoryInfo(PathToFolder);
string FileName = Variables.param + "XL.jpg";
var foundFiles = dirInfo.GetFiles(FileName);
if (foundFiles.Length == 1)
{
ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + PathToFolder + foundFiles[i].Name + "');", true);
}
}
}
}
它的路径是正确的,但它没有工作,因为它正在拔出c:''//驱动器,所以我将映像的位置改为:http://www.companysite.com/img/XL/
。当我用http://www.companysite.com/img/XL/
替换string PathToFolder = "C://LiveSite/img/XL/";
时,我得到错误"不支持URI格式"
然后我把代码改成:
protected void OpenImg_Click(object sender, EventArgs e)
{
int i = 0;
string uriPath = "http://www.companysite.com/img/XL/";
string localPath = new Uri(uriPath).LocalPath;
string FileName = Variables.param + "XL.jpg";
var foundFiles = localPath.GetFiles(FileName); //ERROR
if (foundFiles.Length == 1)
{
ClientScript.RegisterStartupScript(this.GetType(), "openFoundImage", "window.open('" + uriPath + foundFiles[i].Name + "');", true);
}
}
}
}
现在我在使用.GetFiles时遇到了一个错误-我应该使用什么来代替GetFiles?我的代码从网上提取图像正确吗?如有任何帮助,我们将不胜感激。
您需要使用webclient类http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx.
这应该会帮助你:
using System;
using System.Net;
using Myapp.Properties;
namespace MyApp
{
public class Test
{
static void Main(string[] args)
{
string website ="http://www.fryan0911.com/webclientsample.zip";
string downloadfolder = Settings.Default.DownloadFolder;
try
{
WebClient wc = new WebClient();
wc.DownloadFile(website, downloadfolder);
Console.WriteLine("Web file has been downloaded to " + downloadfolder);
}
catch (WebException e)
{
Console.WriteLine(e.Message);
}
Console.ReadKey();
}
}
}
代码借用自:
http://www.fryan0911.com/2009/03/c-download-file-from-website-using-web.html
看起来你在自己的服务器上使用文件,然后你可以像这样从codeehind/controller中获取它们。
var serverRootPath = Server.MapPath("~");
var files = Path.Combine(serverRootPath,"img");
var images = Directory.GetFiles(files);
我也遇到了同样的问题。
string app_path = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
string folderpath = Path.GetDirectoryName(app_path);// Error Here
我注意到,它为我提供了程序集的文件路径,但在字符串的开头有"file:///"。
所以我做了这个:
string app_path = System.Reflection.Assembly.GetExecutingAssembly().CodeBase.Replace(@"file:///", "");
希望这能有所帮助。