Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
#1

Загрузка фотографий (> 2000) через WebClient - C#

06.01.2017, 16:20. Просмотров 433. Ответов 16
Метки нет (Все метки)

Добрый вечер, форумчане!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public async Task DownloadManyFiles(Dictionary<Uri, string> files)
{
    WebClient wc = new WebClient();
    wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
    wc.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
    foreach (KeyValuePair<Uri, string> pair in files) 
    { 
        await wc.DownloadFileTaskAsync(pair.Key, pair.Value); 
    }
    wc.Dispose();
}
 
private void ButtonSaveAll_Click(object sender, EventArgs e)
{
    Dictionary<Uri, string> dict = new Dictionary<Uri, string>();
 
    for (int i = 0; i < listPhoto.Count; i++)
    {
        Uri uri = new Uri(listPhoto[i].Split('|')[1]);
        try
        {
            dict.Add(uri, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "/folder/" + uri.Segments[4]);
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    DownloadManyFiles(dict);
Таким методом, у меня начинается скачивание файлов (фото) поочередно по прямой ссылке к фото. Так вот, иногда загрузка останавливается и всё, никаких исключений (прога не виснет). Например, встанет на 517 из 1000 и всё, дальше загрузка не идет. Все фото берутся из соц.сети вконтакте.

Что это за трабла может быть? Кто сталкивался, подскажите, пожалуйста.

Может можно установить какое-то N-ое время для начала загрузки? Пробовал на все исключения вешать continue, всё тщетно.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2017, 16:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Загрузка фотографий (> 2000) через WebClient (C#):

Загрузка файлов через WebClient с отображением процентов
Здравствуйте, не очень понимаю, как сделать вывод процентов загрузки. Хочу...

Загрузка файлов WebClient
Имеется WebClient, который через метод OpenReadAsync загружает файл, и...

Webclient, асинхронная загрузка
Добрый вечер. В своей программе в main я вызываю функцию LoadFile, которая...

Паралельная загрузка файлов webClient
Всем привет, столкнулся с ошибкой при скачивании сразу 3 файлов. Error:...

Загрузка файлов по очереди используя WebClient
Есть List&lt;string&gt; в котором ссылки на скачку файлов. Циклом прохожу по каждой...

WebClient загрузка файла на ftp с заменой
Здравствуйте, уважаемые. Есть код - WebClient ftp = new WebClient(); ...

16
bax_tang
.NET senior
406 / 327 / 127
Регистрация: 23.09.2016
Сообщений: 945
Завершенные тесты: 3
06.01.2017, 19:40 #2
Fedor_Fedorov, попробуйте явным образом делать "перерывы" между загрузками отдельных файлов через
C#
1
await Task.Delay(200); // для начала 200 мсек
внутри цикла в методе DownloadManyFiles.
1
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
06.01.2017, 20:50  [ТС] #3
bax_tang, не помогло, но сейчас заметил одну фишку - который раз виснет на 49 фотографии. В ручную смотрю в альбоме, всё норм, отображается как и положено..
0
bax_tang
.NET senior
406 / 327 / 127
Регистрация: 23.09.2016
Сообщений: 945
Завершенные тесты: 3
06.01.2017, 22:08 #4
Fedor_Fedorov, могу предположить, что Вас может блокировать сайт ВКонтакте из-за частых http-запросов. Можете прислать весь код целиком или хотя бы список url изображений (попробую то же самое сделать через HttpClient) ?
0
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
06.01.2017, 22:25  [ТС] #5
bax_tang, 229 прямых ссылок к фото.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
https://pp.vk.me/c625729/v625729881/16553/70x1ogh3YyE.jpg
https://pp.vk.me/c621628/v621628788/3d6e/LkUurnkCMTc.jpg
https://pp.vk.me/c616417/v616417177/da53/VEonVBmcxug.jpg
https://pp.vk.me/c616417/v616417271/ad2b/eRDyH4BAOus.jpg
https://pp.vk.me/c619228/v619228362/9b1b/QWG816gqbiI.jpg
https://pp.vk.me/c616718/v616718259/9551/POs-R12yCwQ.jpg
https://pp.vk.me/c616718/v616718259/9548/KPUTDEz8cnw.jpg
https://pp.vk.me/c616718/v616718259/955a/DubHMKtv8NM.jpg
https://pp.vk.me/c7005/v7005454/e9e5/o7CTN_Io1-U.jpg
https://pp.vk.me/c616418/v616418922/f7a7/1M3ioc2QHRQ.jpg
https://pp.vk.me/c411817/v411817840/799e/YgnO4_MqXhU.jpg
https://pp.vk.me/c618530/v618530120/ad8b/J2Q5tQpoirM.jpg
https://pp.vk.me/c619421/v619421598/afd7/Rgywnw0Kp9w.jpg
https://pp.vk.me/c410628/v410628003/510d/hX08BMDYX2M.jpg
https://pp.vk.me/c410628/v410628003/5117/0qehgKaQSPs.jpg
https://pp.vk.me/c619126/v619126719/cfdb/lZsiQCOCqh0.jpg
https://pp.vk.me/c620520/v620520840/9450/Z4JqpAZxpuw.jpg
https://cs540101.vk.me/c540102/v540102726/1f51d/jm3Z6wmncV0.jpg
https://pp.vk.me/c619331/v619331911/df48/qV8Wo0B9gJU.jpg
https://pp.vk.me/c606028/v606028437/5aa8/-c3YHCjJ1pg.jpg
https://pp.vk.me/c619223/v619223428/110bd/a6bE-QBFKZI.jpg
https://pp.vk.me/c540101/v540101940/125a9/vxOAUjnEQXw.jpg
https://pp.vk.me/c619416/v619416911/15459/fJ7lqFbBF-8.jpg
https://pp.vk.me/c619223/v619223057/11476/9-CKhG-gOdc.jpg
https://pp.vk.me/c616623/v616623855/14aa2/-nxHA-E-HNA.jpg
https://cs540101.vk.me/c540103/v540103582/24fd9/9ifbOqRzogg.jpg
https://pp.vk.me/c613520/v613520966/1373d/J7nLIFSk13U.jpg
https://pp.vk.me/c619223/v619223259/17b65/y_e_KQtnRNY.jpg
https://pp.vk.me/c619223/v619223259/17b65/y_e_KQtnRNY.jpg
https://pp.vk.me/c616727/v616727174/14a8c/MPNDxVhQ8ro.jpg
https://pp.vk.me/c619926/v619926103/db7f/qUkS_jLJKg0.jpg
https://pp.vk.me/c616519/v616519680/13937/IRHc26-H2Uo.jpg
https://pp.vk.me/c616319/v616319527/199c9/82Rk0Pr_ktw.jpg
https://pp.vk.me/c616625/v616625282/5d89/tId5AV6Dul0.jpg
https://pp.vk.me/c618825/v618825392/14651/73a1LN6RU-8.jpg
https://pp.vk.me/c620219/v620219911/154de/4Si8oELUCn0.jpg
https://pp.vk.me/c620219/v620219911/15498/rtzvz_2AaA8.jpg
https://pp.vk.me/c619628/v619628056/14846/KQoiaad6MFU.jpg
https://pp.vk.me/c618225/v618225214/160e9/F1tjL081zvA.jpg
https://cs540101.vk.me/c540102/v540102849/2212d/rvw49mNQlNs.jpg
https://pp.vk.me/c624218/v624218344/c0c/FElK3aC967E.jpg
https://cs540101.vk.me/c540102/v540102000/2fc5e/wmu0NCZvaus.jpg
https://pp.vk.me/c617826/v617826831/19e8e/NBIAcA1tfnM.jpg
https://pp.vk.me/c606317/v606317259/647c/ZILjSuJnTZA.jpg
https://pp.vk.me/c622431/v622431432/142a/YD-COwUv8dA.jpg
https://pp.vk.me/c623924/v623924409/1bc0/QELmL2GVd98.jpg
https://pp.vk.me/c7006/v7006626/24a6c/Cgj5SgOJe0o.jpg
https://pp.vk.me/c540101/v540101049/172af/GyootZ-Xe5I.jpg
https://pp.vk.me/c540101/v540101049/172af/GyootZ-Xe5I.jpg
https://pp.vk.me/c616530/v616530441/1b727/-P2nqWGw-1c.jpg
https://pp.vk.me/c616530/v616530704/1d1ca/4W9QnTjPJUc.jpg
https://pp.vk.me/c616018/v616018727/17d90/XTz5bagPdoo.jpg
https://pp.vk.me/c618021/v618021379/a372/UvY0Qmfao-I.jpg
https://pp.vk.me/c616323/v616323369/c4c3/7p8S7h2Am5Q.jpg
https://pp.vk.me/c623216/v623216395/2c30/Au3_jyM4qLY.jpg
https://pp.vk.me/c622122/v622122490/2bf6/kdFD8aWLyf0.jpg
https://pp.vk.me/c618621/v618621225/18357/aANSN3qzVUQ.jpg
https://cs540101.vk.me/c540104/v540104577/577cb/sU3V_AOp4A0.jpg
https://pp.vk.me/c622930/v622930091/3d38/D9reU1MtCL8.jpg
https://cs540101.vk.me/c540100/v540100345/250b8/rVj7uXcev3Q.jpg
https://pp.vk.me/c618730/v618730495/1c228/8hzKS18GmGU.jpg
https://pp.vk.me/c625423/v625423487/55b3/GdKqephU_cY.jpg
https://pp.vk.me/c618723/v618723687/14b95/oLnnoRN0tq4.jpg
https://pp.vk.me/c625423/v625423013/53f8/JcN1_JFiaCA.jpg
https://cs540101.vk.me/c540102/v540102000/34431/vNQMNlQuZA0.jpg
https://pp.vk.me/c617718/v617718734/40e83/V7jeJrrun9E.jpg
https://pp.vk.me/c617824/v617824570/1e1f8/RMZnIPHD7iA.jpg
https://pp.vk.me/c618827/v618827058/1e547/a3D-ZICpHdU.jpg
https://pp.vk.me/c616122/v616122187/a9ba/EILAtaz7aJw.jpg
https://pp.vk.me/c617420/v617420369/18f47/eauMxXO5eqY.jpg
https://pp.vk.me/c618531/v618531461/20d93/HQeUu-nRtoo.jpg
https://pp.vk.me/c606028/v606028437/4779/n-yZcKbMd00.jpg
https://pp.vk.me/c6052/v6052540/41f7/KP_LDVz1Xo8.jpg
https://pp.vk.me/c618625/v618625661/2192b/E3GDa5M2rx8.jpg
https://pp.vk.me/c412530/v412530724/43f1/S7tAU6_pt5I.jpg
https://pp.vk.me/c409821/v409821027/95a2/967jirLnSXg.jpg
https://pp.vk.me/c623721/v623721078/795b/Tk56yDgFrqY.jpg
https://pp.vk.me/c614718/v614718221/17e04/VekgPjw0Pg8.jpg
https://pp.vk.me/c622126/v622126734/6541/5D92aJkrkX8.jpg
https://pp.vk.me/c625717/v625717430/9be6/OS-TI3gW6T8.jpg
https://pp.vk.me/c624023/v624023205/abcf/VY4hG2dbnog.jpg
https://pp.vk.me/c623625/v623625078/a9c4/BIKcMJfMvPw.jpg
https://pp.vk.me/c622419/v622419912/e25f/_VL7Qglk9to.jpg
https://pp.vk.me/c618419/v618419437/1ebc9/BKVFu1aOf6I.jpg
https://pp.vk.me/c621628/v621628852/3920/J1QrCtoHf2s.jpg
https://pp.vk.me/c624927/v624927495/c2c5/94u6APXxcm8.jpg
https://pp.vk.me/c623317/v623317220/104d4/pnX_HJRnEUc.jpg
https://pp.vk.me/c622129/v622129554/d973/_1BxUMQ5Eio.jpg
https://pp.vk.me/c623621/v623621091/f071/gsnyCrrktv0.jpg
https://pp.vk.me/c618731/v618731259/21a1d/o7wRGC-nk4k.jpg
https://pp.vk.me/c625521/v625521876/113a3/RKeO8-kQgAk.jpg
https://pp.vk.me/c625521/v625521815/11a5b/8ppMC6foxm8.jpg
https://pp.vk.me/c623817/v623817972/12ba7/Zf6aKCwnevo.jpg
https://pp.vk.me/c625523/v625523953/110d2/iPP_qIE4T-c.jpg
https://pp.vk.me/c625523/v625523722/14880/usqJCnNnmao.jpg
https://pp.vk.me/c624229/v624229201/1571d/SS1eE1fttXQ.jpg
https://pp.vk.me/c621318/v621318468/9692/XrjtXyrWQk4.jpg
https://pp.vk.me/c625817/v625817983/162dc/EBPmehjmsMY.jpg
https://cs540101.vk.me/c540105/v540105914/199ef/XmGb-YVK0Qo.jpg
https://pp.vk.me/c625817/v625817788/1a576/Z6tq_bjYqq8.jpg
https://pp.vk.me/c625817/v625817788/1a56c/SGzgLxj9PUU.jpg
https://pp.vk.me/c625817/v625817788/1a562/zjTEt2CGT9c.jpg
https://pp.vk.me/c621621/v621621302/d555/MNxQBfF5x0M.jpg
https://pp.vk.me/c625817/v625817314/1afec/1aDnk-Mqm44.jpg
https://pp.vk.me/c623716/v623716933/1633f/eJjWAsx3u0I.jpg
https://cs540101.vk.me/c540108/v540108056/4914/SeUo8roGB4w.jpg
https://pp.vk.me/c621822/v621822123/d130/Jf9JYnl_gVc.jpg
https://pp.vk.me/c621822/v621822013/d40f/6PSOhnuEoFc.jpg
https://pp.vk.me/c623129/v623129546/1cd54/2-QtzKOpdTA.jpg
https://pp.vk.me/c623129/v623129953/1e29e/-k1XYpZ_7cY.jpg
https://pp.vk.me/c624626/v624626940/1fd7e/tQNCE-cpYi0.jpg
https://cs540101.vk.me/c540106/v540106208/1fac8/0m8NBAlkOZc.jpg
https://pp.vk.me/c621923/v621923810/11a2d/0yG45hq9dG8.jpg
https://pp.vk.me/c621521/v621521468/403f/IZEuLVwXKLw.jpg
https://pp.vk.me/c309721/v309721468/1caf/9n-qT54vyNk.jpg
https://pp.vk.me/c624530/v624530983/1e1c4/d2NTgrUhTNU.jpg
https://pp.vk.me/c317429/v317429949/96c6/1KJ4erxGCXQ.jpg
https://pp.vk.me/c624828/v624828627/1fc39/CZ3AIDnGFVg.jpg
https://pp.vk.me/c624528/v624528852/1953b/MMVM60s3TLc.jpg
https://pp.vk.me/c623129/v623129979/1fe9e/keX0CGSn81g.jpg
https://pp.vk.me/c7006/v7006009/12224/GreRtWqqw5c.jpg
https://pp.vk.me/c7006/v7006009/12224/GreRtWqqw5c.jpg
https://pp.vk.me/c7008/v7008380/675dc/PwkVmRa4ORk.jpg
https://pp.vk.me/c7011/v7011283/24e7/fydds7lCjQc.jpg
https://pp.vk.me/c625517/v625517788/2593d/MckDvEe6OOQ.jpg
https://pp.vk.me/c617424/v617424355/14529/nhZ864ORxGo.jpg
https://cs540101.vk.me/c540100/v540100345/22088/huXtcvHaPAQ.jpg
https://cs540101.vk.me/c540104/v540104246/16b30/5ARVbCDl6wQ.jpg
https://pp.vk.me/c625125/v625125506/24c67/nTFHko796mc.jpg
https://pp.vk.me/c625622/v625622748/28d29/mFjf5agTUxQ.jpg
https://pp.vk.me/c621922/v621922949/1ad37/ulJYDRQM484.jpg
https://pp.vk.me/c620024/v620024475/1a314/1vKh6SrerXQ.jpg
https://pp.vk.me/c407420/v407420566/4f7c/ekp7AqynJm8.jpg
https://pp.vk.me/c622917/v622917426/2ccdd/VthSXEHBkNo.jpg
https://pp.vk.me/c621725/v621725677/22e46/bzz7OquLPyM.jpg
https://pp.vk.me/c622617/v622617951/35f7c/yOTR84M2uRQ.jpg
https://pp.vk.me/c628726/v628726876/7c24/f_HQIMTjUm4.jpg
https://pp.vk.me/c624417/v624417853/37e36/afJoRaZbLb0.jpg
https://pp.vk.me/c628726/v628726723/6813/Z4tJPfXX9aE.jpg
https://pp.vk.me/c628726/v628726013/735e/tfiNS8SnWjE.jpg
https://pp.vk.me/c629415/v629415218/448a/_Kf92M8USSQ.jpg
https://pp.vk.me/c628726/v628726793/89a8/HOkepEs1Wxg.jpg
https://pp.vk.me/c628726/v628726793/9078/CCRSTCXzafs.jpg
https://pp.vk.me/c628726/v628726793/9078/CCRSTCXzafs.jpg
https://pp.vk.me/c625721/v625721045/3557f/UIHTPYTz1-k.jpg
https://pp.vk.me/c628726/v628726576/7dbb/E82Mq4DFwa4.jpg
https://pp.vk.me/c622318/v622318920/38e9e/9m3L8kz9lGI.jpg
https://pp.vk.me/c627723/v627723252/40e5/43fS-_LuSPI.jpg
https://pp.vk.me/c629208/v629208911/6b95/ThbM1NmKQKM.jpg
https://pp.vk.me/c629208/v629208911/6b9f/cPhhJCJ_GvY.jpg
https://pp.vk.me/c629208/v629208911/6ba8/obZEgn_6cz0.jpg
https://pp.vk.me/c419516/v419516581/9ca5/Nak25t_-Tco.jpg
https://pp.vk.me/c627527/v627527806/23e4d/BYzhB2XCDoo.jpg
https://pp.vk.me/c628128/v628128734/9cd6/U8Wb7mCpINs.jpg
https://pp.vk.me/c413624/v413624641/7e83/UR0hD6x81QU.jpg
https://pp.vk.me/c624231/v624231736/443ec/z_z_rE1EdSA.jpg
https://pp.vk.me/c628318/v628318723/156e4/dw8oNm4h4fo.jpg
https://cs540101.vk.me/c540108/v540108126/8372/2-oRXc4getI.jpg
https://pp.vk.me/c627729/v627729629/178b4/vgVycNY8gLs.jpg
https://pp.vk.me/c621717/v621717475/1af3/cJbFz86XBPE.jpg
https://pp.vk.me/c622420/v622420150/4a17f/9bj7QHUa59w.jpg
https://pp.vk.me/c627622/v627622373/22b70/LogFQfSUZ34.jpg
https://pp.vk.me/c627130/v627130122/2159f/YkrnNHH3maE.jpg
https://pp.vk.me/c630824/v630824371/8a2b/dJz-GH-oDyc.jpg
https://pp.vk.me/c628025/v628025911/231ff/okl0-IxVZnw.jpg
https://cs540101.vk.me/c540107/v540107274/236db/m5opvxXyV9Y.jpg
https://pp.vk.me/c7004/v7004778/15e6f/KgdumaxT3oo.jpg
https://pp.vk.me/c7004/v7004778/15e6f/KgdumaxT3oo.jpg
https://pp.vk.me/c7004/v7004778/15e6f/KgdumaxT3oo.jpg
https://pp.vk.me/c631816/v631816150/a5a5/s1P94Yj23Kg.jpg
https://pp.vk.me/c621727/v621727087/2edbe/A7YteDj3tHU.jpg
https://pp.vk.me/c631728/v631728435/bee2/mqSc6VZjMOs.jpg
https://pp.vk.me/c628616/v628616815/2a501/LVVrqAFPTZs.jpg
https://pp.vk.me/c624820/v624820143/1ccd9/J7lfEwjFXZk.jpg
https://pp.vk.me/c631624/v631624326/180cf/zgLP4rTpcSY.jpg
https://pp.vk.me/c628821/v628821955/1b2b9/yCYYYgsw4m0.jpg
https://pp.vk.me/c622228/v622228925/26c24/VPyUuhC1GOE.jpg
https://pp.vk.me/c630930/v630930633/1339b/3-f3T_J5dG0.jpg
https://pp.vk.me/c630930/v630930382/14280/1ggLGVPZxZ0.jpg
https://pp.vk.me/c631728/v631728435/bed9/ZjO-MO28L2U.jpg
https://pp.vk.me/c631728/v631728435/bee2/mqSc6VZjMOs.jpg
https://pp.vk.me/c630921/v630921788/1a01b/1IVJ4nJDcoA.jpg
https://pp.vk.me/c630921/v630921788/1a01b/1IVJ4nJDcoA.jpg
https://pp.vk.me/c629525/v629525499/3cf9c/8Mr922_xEzY.jpg
https://pp.vk.me/c631330/v631330087/22bf9/eTawceA2W9E.jpg
https://pp.vk.me/c631626/v631626159/832b/jY7_8I5Pe2Q.jpg
https://pp.vk.me/c630120/v630120788/1e8a9/mvwHr2jGefQ.jpg
https://pp.vk.me/c630720/v630720885/2c55d/zFlmpIN6ORs.jpg
https://pp.vk.me/c626216/v626216069/1561/YcwPjLQqPVo.jpg
https://pp.vk.me/c604319/v604319435/5189/UilqdCi64WY.jpg
https://pp.vk.me/c7008/v7008872/31dfe/F4ZhfIEudN8.jpg
https://pp.vk.me/c615722/v615722602/1535d/rWXdRmsSd-A.jpg
https://pp.vk.me/c626625/v626625958/6d54/wvAqMVkqySU.jpg
https://pp.vk.me/c626625/v626625958/6d4c/2m1iZqLh_wQ.jpg
https://pp.vk.me/c631520/v631520911/2c77f/nJNDXJ1Hif4.jpg
https://pp.vk.me/c631520/v631520911/2c789/__LVnHeB8pc.jpg
https://pp.vk.me/c631520/v631520911/2c793/bXX-y9Ufu1M.jpg
https://pp.vk.me/c631520/v631520911/2c79d/qdzMW64uMHY.jpg
https://pp.vk.me/c631520/v631520911/2c7a7/rbhB3omuOg0.jpg
https://pp.vk.me/c631520/v631520911/2c7b1/i8TCgSfT0O0.jpg
https://pp.vk.me/c631520/v631520911/2c7bb/LlPvO_Lani8.jpg
https://pp.vk.me/c631520/v631520911/2c7c5/5Hqyvy4V08U.jpg
https://pp.vk.me/c631520/v631520911/2c7cf/V_TwDOY55uk.jpg
https://pp.vk.me/c631520/v631520911/2c7d9/JKzn137WBGI.jpg
https://pp.vk.me/c631520/v631520911/2c7e3/Vzc7RVB-p7M.jpg
https://pp.vk.me/c631520/v631520911/2c7ed/yhcJCLiBzx8.jpg
https://pp.vk.me/c631520/v631520911/2c7f7/jP_PoXj1m7o.jpg
https://pp.vk.me/c631520/v631520911/2c801/Ox_SOgCC3kM.jpg
https://pp.vk.me/c631520/v631520911/2c80b/XkMV0jirB-c.jpg
https://pp.vk.me/c631520/v631520911/2c815/LEvLLsvFIXk.jpg
https://pp.vk.me/c631520/v631520911/2c81f/gt_84S6e3nk.jpg
https://pp.vk.me/c631520/v631520911/2c829/4H1gROSTwzs.jpg
https://pp.vk.me/c630224/v630224602/2c4d9/fxnjE9EykqU.jpg
https://pp.vk.me/c631628/v631628753/2fa81/diKd-EC97S0.jpg
https://pp.vk.me/c631628/v631628753/2fa77/BPu1BHngObk.jpg
https://pp.vk.me/c543101/v543101423/2ca9d/HkXLWASF_y4.jpg
https://pp.vk.me/c636422/v636422128/14df8/mqIuxcRZjpw.jpg
https://pp.vk.me/c633128/v633128727/36d28/4HETNaAi5wc.jpg
https://pp.vk.me/c637423/v637423839/30a7/NFban4kVbr0.jpg
https://pp.vk.me/c7011/v7011799/1fac0/2LwIw7TNBOE.jpg
https://pp.vk.me/c626729/v626729936/21f0a/OUy0zx4sK-k.jpg
https://pp.vk.me/c628618/v628618586/2d9a6/HqQvIUczW-4.jpg
https://pp.vk.me/c836425/v836425866/11215/zkJx2iPeKUU.jpg
https://pp.vk.me/c604518/v604518804/40e3c/KEfH_46p5ng.jpg
https://pp.vk.me/c604518/v604518888/4866a/SMMD9-nN7gA.jpg
https://cs540101.vk.me/c635103/v635103286/817a/44ys1IvHKNc.jpg
https://pp.vk.me/c836523/v836523348/20a95/Ez-X9vBH_wE.jpg
https://pp.vk.me/c543108/v543108565/209c5/DSBeEzrKcCE.jpg
https://pp.vk.me/c636628/v636628719/440bb/yqgRhZzi1Sw.jpg
0
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
07.01.2017, 13:23 #6
Fedor_Fedorov, вот такой код (синхронный) загрузил все по вашим ссылкам (за исключением повторов, которые там присутствовали).
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
 
namespace vcTest {
    class Program {
        static void Main(string[] args) {
            Dictionary<Uri, string> addresses = new Dictionary<Uri, string>();
            foreach (string line in File.ReadLines("links.txt")) {
                try {
                    addresses.Add(new Uri(line), Path.GetFileName(line));
                }
                catch { }
            }
            Console.WriteLine("Addresses created!");
            Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images"));
 
            foreach (var item in addresses) {
                WebRequest req = WebRequest.Create(item.Key);
                req.Proxy = null;
                using (WebResponse resp = req.GetResponse()) {
                    using (Stream stream = resp.GetResponseStream()) {
                        string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images", item.Value);
                        using (FileStream fs = File.Create(path)) {
                            stream.CopyTo(fs);
                            Console.WriteLine("File {0} created!", item.Value);
                        }
                    }
                }
            }
            Console.WriteLine("Completed!");
            Console.ReadLine();
        }
    }
}
1
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
07.01.2017, 16:17  [ТС] #7
insite2012, у меня первый раз скачало 28 фоток и выскочило исключение:

Необработанное исключение типа "System.Net.WebException" в System.dll
Дополнительные сведения: Удаленный сервер возвратил ошибку: (504) Истекло время ожидания шлюза.

Ну, с этим ладно, разберусь, думаю.

Можете, пожалуйста, подсказать, как переделать ваш код, чтобы скачивал файлы асинхронно? А то у меня WinForms и при скачивании программа виснет. С остальным, вроде разобрался.
0
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
07.01.2017, 17:05 #8
Цитата Сообщение от Fedor_Fedorov Посмотреть сообщение
как переделать ваш код, чтобы скачивал файлы асинхронно?
Типа того. Поскольку использую .NET 4.0 с небольшим дополнением, пришлось немного поизвращаться для вывода прогресса.
Форма, на ней кнопка и листбокс для контроля закачки.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
 
namespace vcWinFormTest {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            btnDownload.Click += new EventHandler(btnDownload_Click);
            
 
        }
 
        void btnDownload_Click(object sender, EventArgs e) {
            Dictionary<Uri, string> addresses = new Dictionary<Uri, string>();
            foreach (string line in File.ReadAllLines("links.txt")) {
                try {
                    addresses.Add(new Uri(line), Path.GetFileName(line));
                }
                catch { }
            }
            Progress reporter = new Progress();
            reporter.ReportEvent += new EventHandler(reporter_ReportEvent);
            DownloadAllFiles(addresses, reporter);
        }
 
        void reporter_ReportEvent(object sender, EventArgs e) {
            listBox1.Items.Add(string.Format("File named: {0} downloaded",(sender as Progress).Filename));
        }
 
        public async void DownloadAllFiles(Dictionary<Uri, string> addresses, IProgress<string> reporter) {
            Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images"));
            foreach (var address in addresses) {
                string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images", address.Value);
                WebRequest req = WebRequest.Create(address.Key);
                using (WebResponse resp = await req.GetResponseAsync()) {
                    using (Stream ns = resp.GetResponseStream()) {
                        using (FileStream fs = File.Create(filePath)) {
                            ns.CopyToAsync(fs);
                            reporter.Report(address.Value);
                        }
                    }
                }
            }
            listBox1.Items.Add("Completed!");
        }
    }
    class Progress : IProgress<string> {
        public string Filename { get; private set; }
        public event EventHandler ReportEvent = delegate { };
 
        public void Report(string value) {
            Filename = value;
            ReportEvent(this, EventArgs.Empty);
        }
    }
}
1
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
07.01.2017, 17:22  [ТС] #9
insite2012, спасибо большое за код, но что-то ерунда какая-то получается..
Мне ListBox вообще не нужен, я хотел просто отображать прогресс бар и кол-во скаченных фото, пример: Скачано 8 из 100, с тем кодом (который в первом посте) получилось всё это сделать, а с вашим кодом что-то не врубаюсь.
0
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
07.01.2017, 17:31 #10
Цитата Сообщение от Fedor_Fedorov Посмотреть сообщение
я хотел просто отображать прогресс бар и кол-во скаченных фото
Ну так переделайте мой пример, особых проблем это не составит.

Добавлено через 6 минут
Цитата Сообщение от Fedor_Fedorov Посмотреть сообщение
с вашим кодом что-то не врубаюсь.
Ну вот так, например. Листбокс убираем, добавляем метку и прогресс.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
 
namespace vcWinFormTest {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            btnDownload.Click += new EventHandler(btnDownload_Click);
            
 
        }
 
        void btnDownload_Click(object sender, EventArgs e) {
            Dictionary<Uri, string> addresses = new Dictionary<Uri, string>();
            foreach (string line in File.ReadAllLines("links.txt")) {
                try {
                    addresses.Add(new Uri(line), Path.GetFileName(line));
                }
                catch { }
            }
            Progress reporter = new Progress();
            reporter.ReportEvent += new EventHandler(reporter_ReportEvent);
            progressBar1.Maximum = addresses.Count;
 
            DownloadAllFiles(addresses, reporter);
        }
 
        void reporter_ReportEvent(object sender, EventArgs e) {
            progressBar1.Value++;
            label1.Text = string.Format("Downloaded: {0} from {1}", 
                progressBar1.Value, progressBar1.Maximum);
        }
 
        public async void DownloadAllFiles(Dictionary<Uri, string> addresses, IProgress<string> reporter) {
            Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images"));
            foreach (var address in addresses) {
                string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images", address.Value);
                WebRequest req = WebRequest.Create(address.Key);
                using (WebResponse resp = await req.GetResponseAsync()) {
                    using (Stream ns = resp.GetResponseStream()) {
                        using (FileStream fs = File.Create(filePath)) {
                            ns.CopyToAsync(fs);
                            reporter.Report(address.Value);
                        }
                    }
                }
            }
            progressBar1.Value = 0;
            label1.Text = "Completed!";
        }
    }
    class Progress : IProgress<string> {
        public string Filename { get; private set; }
        public event EventHandler ReportEvent = delegate { };
 
        public void Report(string value) {
            Filename = value;
            ReportEvent(this, EventArgs.Empty);
        }
    }
}
1
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
07.01.2017, 17:40  [ТС] #11
insite2012, я даже не знаю как это прокомментировать (см скрин). И такого вида - все изображения, а некоторые вообще недоступны.
0
Миниатюры
Загрузка фотографий (> 2000) через WebClient   Загрузка фотографий (> 2000) через WebClient  
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
07.01.2017, 18:01 #12
Цитата Сообщение от Fedor_Fedorov Посмотреть сообщение
такого вида - все изображения, а некоторые вообще недоступны.
Попробуйте синхронный вариант. Если он работает корректно - значит проблема в этом. Я тогда переделаю его.
1
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
07.01.2017, 18:03  [ТС] #13
insite2012, синхронный я проверял, всё в порядке было.
0
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
07.01.2017, 18:11 #14
Лучший ответ Сообщение было отмечено lumiLilo как решение

Решение

Fedor_Fedorov, а вот так попробуйте.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
 
namespace vcWinFormTest {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            btnDownload.Click += new EventHandler(btnDownload_Click);
        }
 
        void btnDownload_Click(object sender, EventArgs e) {
            Dictionary<Uri, string> addresses = new Dictionary<Uri, string>();
            foreach (string line in File.ReadAllLines("links.txt")) {
                try {
                    addresses.Add(new Uri(line), Path.GetFileName(line));
                }
                catch { }
            }
            Progress reporter = new Progress();
            reporter.ReportEvent += new EventHandler(reporter_ReportEvent);
            progressBar1.Maximum = addresses.Count;
 
            Task.Factory.StartNew(() => DownloadAllFiles(addresses, reporter));
        }
 
        void reporter_ReportEvent(object sender, EventArgs e) {
            progressBar1.Invoke((Action)(() => progressBar1.Value++));
            label1.Invoke((Action)(() => {
                label1.Text = string.Format("Downloaded: {0} from {1}",
                progressBar1.Value, progressBar1.Maximum);
            }));
            
        }
 
        public  void DownloadAllFiles(Dictionary<Uri, string> addresses, IProgress<string> reporter) {
            Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images"));
            foreach (var address in addresses) {
                string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images", address.Value);
                WebRequest req = WebRequest.Create(address.Key);
                using (WebResponse resp = req.GetResponse()) {
                    using (Stream ns = resp.GetResponseStream()) {
                        using (FileStream fs = File.Create(filePath)) {
                            ns.CopyTo(fs);
                            reporter.Report(address.Value);
                        }
                    }
                }
            }
            progressBar1.Invoke((Action)(() => progressBar1.Value = 0));
            label1.Invoke((Action)(() => label1.Text = "Completed!"));
        }
    }
    class Progress : IProgress<string> {
        public string Filename { get; private set; }
        public event EventHandler ReportEvent = delegate { };
 
        public void Report(string value) {
            Filename = value;
            ReportEvent(this, EventArgs.Empty);
        }
    }
}
1
lumiLilo
25 / 25 / 19
Регистрация: 28.12.2015
Сообщений: 199
07.01.2017, 18:24  [ТС] #15
insite2012, вы — профи! Спасибо!
0
insite2012
Модератор
Эксперт .NET
4794 / 3753 / 1081
Регистрация: 12.10.2013
Сообщений: 10,991
Записей в блоге: 2
07.01.2017, 18:27 #16
Цитата Сообщение от Fedor_Fedorov Посмотреть сообщение
вы — профи!
Мне бы ваш оптимизм.
Цитата Сообщение от Fedor_Fedorov Посмотреть сообщение
Спасибо!
На здоровье. Тренировка всегда полезна.
0
Antoniy_
1 / 1 / 1
Регистрация: 17.08.2013
Сообщений: 19
28.01.2017, 08:57 #17
insite2012, Приветствую!
Воспользовался вашим последним кодом.
Как сделать что бы если сервер не ответил(504 например) он ломился до последнего?Вообщем я про исключения..
Если вопрос глуп, то прощу прощения нуб я)
0
28.01.2017, 08:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2017, 08:57
Привет! Вот еще темы с решениями:

WebClient.DownloadFileTaskAsync() FTP прерывается загрузка
Есть список ссылок на файлы ftp. Есть необходимость загрузить эти файлы...

Асинхронная загрузка файлов методом WebClient.DownloadFileAsync
Вопрос адресуется в первую очередь профессионалам. При разработке приложения...

загрузка фотографий в интернет
Помогите загрузить фотографию на страницу в интернете

Как скачивать несколько файлов через WebClient по очереди, через DownloadFileAsync
Доброй ночи. Столкнулся с проблемой по скачиванию нескольких файлов друг за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru