2012-10-14 3 views
4

Я новичок, поэтому я уверен, что это что-то действительно основное, что мне не хватает.WebClient DownloadFile Недопустимые символы в пути

У меня есть простая программа для запуска файла 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);       
    } 
+0

Возможно ли, что файл CSV содержит двойные кавычки? Затем вы должны заменить их ... – Kai

+0

У моего файла csv их нет ... – user1744966

+0

Возможно, проблема связана с 'saveLocation'? лучше использовать 'Path.Combine()' для путей (путь лучше, чем 'textBox2.Text + @" \ "+ prodID +" .jpg ";'). Можете ли вы проверить, какова ценность saveLocation? – Nasreddine

ответ

2

Независимо от того, какая функция или метод создает эти кавычки, вы можете заменить их все.

String myUrl = str[0]; 
myUrl = myUrl.Replace("\"", ""); 
GetImage(myUrl, str[4]); 

Я думаю, что ваши файлы содержат кавычки или их метод parseCSV.

Update:

Я использовал этот код и он работает без проблем на всех, и без кавычек:

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); 
} 
+0

Пробовал, что нет разницы. В моем файле csv нет кавычек (если они не скрыты). И я уверен, что они не вводятся в parseCSV. 'using (StreamReader readFile = новый StreamReader (pth)) { строка строки; string [] row; while ((line = readFile.ReadLine())! = Null) { строка = строка.Split (','); parsedData.Add (строка); } } ' – user1744966

+0

Это работает, потому что вы явно определили строку []. Моя проблема в том, когда он получает строку из parseCSV. Я попытался опубликовать этот код в предыдущем комментарии, но он получился немного уродливым.Я просто не знаю, откуда берутся кавычки и почему строка replace не удаляет их. – user1744966

+1

Ну, по какой-то причине, когда я попытался заменить его перед отправкой, как вы изначально предложили, это не сработало. Но я это: 'GetImage (str [0] .Replace (" \ "", ""), str [4]); 'исправил проблему. Спасибо за помощь. – user1744966

Смежные вопросы