Сохранение файлов в папку - PullRequest
       3

Сохранение файлов в папку

0 голосов
/ 16 февраля 2012

это действительно работа: <, вот мой код: </p>

        public void buttonSaveTo_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.ShowDialog();
        richTextBox1.Text = fbd.SelectedPath;
        string destination = fbd.SelectedPath;
    }

и вот как я пытаюсь сохранить файлы

                {
                webClient.DownloadFile("http://i.imgur.com/" + picture, @"destionation" + picture);
            }

РЕДАКТИРОВАТЬ // хорошо, спасибо за ответы, но это все еще не работает: <, возможно, я делаю что-то не так, посмотрите, это весь код, который я написал </p>

namespace Imgur { открытый частичный класс Form1: Form { флаг bool = true; intloadedNumber = 0;

    public Form1()
    {
        InitializeComponent();
    }

    public void buttonStart_Click(object sender, EventArgs e)
    {
        buttonStart.Enabled = false;
        buttonStop.Enabled = true;
        if (!flag)
        {
            flag = true;
        }

        for (int i=0;i<100000 && flag;i++)
        {
            WebClient webClient = new WebClient();
            string pic1 = rnd_str(5);
            string pic2 = ".jpg";
            string picture = pic1 + pic2;

            //********** GETTING SIZE OF IMAGE ***********
            Size sz = GetSize("http://i.imgur.com/" + picture);
            string imageSize = (sz.Width.ToString() + " " + sz.Height.ToString()); ;
            //********************************************

            if(imageSize != "161 81")
            {
                webClient.DownloadFile("http://i.imgur.com/" + picture, destination + picture);

                richTextBox1.Text += String.Format("Downloaded picture: {0}\r\n", picture);
                downloadedNumber++;
                textBoxDownloadedNumber.Text = string.Format("{0}", downloadedNumber);
            }
            webClient.Dispose();
            Application.DoEvents();
            if (i == 999995)
            {
                flag = false;
            }
        }
        richTextBox1.Text += "theend\n";
        buttonStart.Enabled = true;
        buttonStop.Enabled = false;
    }

    public static Size GetSize(string url)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "GET";
        request.Accept = "image/gif";
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream s = response.GetResponseStream();
        Bitmap bmp = new Bitmap(s);
        Size sz = new Size(bmp.Width, bmp.Height);
        return sz;
    }

    public static string rnd_str(int liczba_liter)
    {
        Random r = new Random();
        int char_type;
        string return_string = "";
        int i =0;
        for (i = 0; i < liczba_liter; i++)
        {
            if (r.Next(1, 3) == 1)
            {
                char_type = r.Next(1, 4);
                switch (char_type)
                {
                    case 1:
                        return_string += (char)r.Next(48, 58); // convertion int -> ASCII character; 48-57 are ASCII digits
                        break;
                    case 2:
                        return_string += (char)r.Next(97, 123); // convertion int -> ASCII character; as above but small letters
                        break;
                    case 3:
                        return_string += (char)r.Next(65, 91); // as above; large letters
                        break;
                    default:
                        i -= 1;
                        break;//do not add any letter if no type is allowed
                }
            }
            else
            {
                i -= 1;
                return_string += "";
            }
        }
        return return_string;
    }

    private void buttonStop_Click(object sender, EventArgs e)
    {
        flag = false;
        buttonStart.Enabled = true;
    }

    public void buttonSaveTo_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.ShowDialog();
        richTextBox1.Text = fbd.SelectedPath;
        string destination = fbd.SelectedPath;
    }
}

}

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

В настоящее время вы просто объединяете строки, но имя вашей папки, вероятно, не заканчивается символом-разделителем каталогов. Предполагая, что picture - это имя файла вашей картинки (например, foo.jpg), используйте Path.Combine() вместо этого, чтобы инфраструктура сделала всю работу за вас:

var localFileName = Path.Combine(destination, picture);
webClient.DownloadFile("http://i.imgur.com/" + picture, localFileName);
0 голосов
/ 16 февраля 2012

Ваше «назначение» в DownloadFile-Call является строкой, а не фактической переменной. Также переменная назначения должна быть на уровне класса. Что-то вроде:

private string destination;
public void buttonSaveTo_Click(object sender, EventArgs e)
{
        FolderBrowserDialog fbd = new FolderBrowserDialog();
        fbd.ShowDialog();
        richTextBox1.Text = fbd.SelectedPath;
        destination = fbd.SelectedPath;
}

webClient.DownloadFile("http://i.imgur.com/" + picture, System.IO.Path.Combine(destionation, picture));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...