Я пытаюсь написать консольное приложение, чтобы сохранить одно изображение с заданным путем в новом каталоге, как это предлагается в этом статья. Несмотря на то, что моя программа не выдает никаких ошибок, изображение, которое я хочу загрузить, просто не будет отображаться в моей папке. Я думаю, это потому, что я никогда не говорил своей программе, где я хочу сохранить файл? Однако я не нашел ничего проясняющего эту конкретную проблему, которая у меня сейчас есть. Я уже ссылался на этот и этот вопрос тоже.


using System;
using System.IO;
using System.Net;

namespace GetImages
{
class Program
{
    static void Main(string[] args)
    {
        string dirPath = @"C:\Users\Stefan\Desktop\Images";

        try
        {
            // Create a new directory
            DirectoryInfo imageDirectory = Directory.CreateDirectory(dirPath);
            Console.WriteLine($"Directory '{Path.GetFileName(dirPath)}' was created successfully in {Directory.GetParent(dirPath)}");

            // Image I'm trying to download from the web
            string filePath = @"http://ilarge.lisimg.com/image/12056736/1080full-jessica-clements.jpg";

            using (WebClient _wc = new WebClient())
            {
                _wc.DownloadFileAsync(new Uri(filePath), Path.GetFileName(filePath));
                _wc.Dispose();
            }

            Console.WriteLine("\nFile successfully saved.");
        }

        catch(Exception e)
        {
            while (e != null)
            {
                Console.WriteLine(e.Message);
                e = e.InnerException;
            }
        }            

        if (System.Diagnostics.Debugger.IsAttached)
        {
            Console.WriteLine("Press any key to continue . . .");
            Console.ReadKey(true);
        }
    }
}

}


Правка . Через некоторое время я понял, что файл сохранен в "C:\Users\Stefan\Documents\Visual Studio 2017\Projects\GetImages\GetImages\bin\Debug". Но как получить файл для сохранения непосредственно в dirPath, не перемещая их из Debug в dirPath отдельно? Моим следующим шагом будет расширение этой программы для сохранения нескольких файлов одновременно.

c#
0
間澤東雲 27 Май 2017 в 19:17

2 ответа

Лучший ответ

Второй аргумент DownloadFileAsync - это место сохранения, поэтому объедините созданный вами путь и имя файла из URL:

_wc.DownloadFileAsync(new Uri(filePath), Path.Combine(dirPath, Path.GetFileName(filePath)));
2
Alex K. 27 Май 2017 в 16:29

Попробуй это:

using (WebClient _wc = new WebClient())
            {
                _wc.DownloadFileAsync(new Uri(filePath), Path.Combine(dirPath,Path.GetFileName(filePath)));

            }
0
Allen King 27 Май 2017 в 16:35