我是新手,所以我确信这是我缺少的基本功能.
我有一个简单的程序来运行一个csv文件,其中包含指向图像的链接,以将这些图像保存在指定的保存文件位置.
我正在将包含url的单元格解析为List< string []>.
如果我把GetImage(@“http://www.example.com/picture.jpg”,1)放入我的GetImage函数就可以了.当我尝试使用循环并传入str [0]变量时,我收到有关路径中非法字符的错误.
我用MessageBox告诉我有什么区别,据我所知,当我将str [0]传递给函数时,它会添加双引号(即“http://www.example.com”)当我发送一个字符串时,显示而不是http://www.example.com.
我究竟做错了什么?
private void button2_Click(object sender, EventArgs e)
{
string fileName = textBox1.Text;
folderBrowserDialog1.ShowDialog();
string saveLocation = folderBrowserDialog1.SelectedPath;
textBox2.Text = saveLocation;
List<string[]> file = parseCSV(fileName);
int count = 0;
foreach (string[] str in file)
{
if (count != 0)
{
GetImage(str[0], str[4]);
}
count++;
}
//GetImage(@"http://www.example.com/picture.jpg", "1");
}
private void GetImage(string url, string prodID)
{
string saveLocation = textBox2.Text + @"\";;
saveLocation += prodID + ".jpg";
WebClient webClt = new WebClient();
webClt.DownloadFile(url, saveLocation);
}
最佳答案 无论哪个函数或方法创建这些引号,您都可以替换它们.
String myUrl = str[0];
myUrl = myUrl.Replace("\"", "");
GetImage(myUrl, str[4]);
我认为你的文件包含引号或parseCSV方法创建它们.
更新:
我使用了这段代码,它完全没有问题,没有引号:
static void Main(string[] args)
{
string fileName = "Test";
//folderBrowserDialog1.ShowDialog();
string saveLocation = ".\\";
//textBox2.Text = saveLocation;
List<string[]> file = new List<string[]>
{
new string[] { "http://www.example.com", "1", "1", "1", "1"},
new string[] { "http://www.example.com", "2", "2", "2", "2"},
};
int count = 0;
foreach (string[] str in file)
{
if (count != 0)
{
GetImage(str[0], str[4]);
}
count++;
}
//GetImage(@"http://www.example.com/picture.jpg", "1");
}
private static void GetImage(string url, string prodID)
{
string saveLocation = ".\\"; // textBox2.Text + @"\"; ;
saveLocation += prodID + ".jpg";
WebClient webClt = new WebClient();
Console.WriteLine(url);
webClt.DownloadFile(url, saveLocation);
}