Скачиваю во временную папку архив tempp.zip
System.Net.WebClient miner = new System.Net.WebClient();
load1.DownloadFileAsync(new Uri("http:/site.pro/tempp.zip"),
Path.GetTempPath() + "\\tempp.zip"); // Скачиваем в %temp%
while (load1.IsBusy) { } // дождаться завершения загрузки
А потом пытаюсь заэкстрактить
ZipFile.ExtractToDirectory(Path.GetTempPath() + "\\tempp.zip", Path.GetTempPath());
Но архив не хочет распаковываться ,как быть ?
Вот пример работы через System.Net.Http.HttpClient
class Program
{
static void Main(string[] args)
{
string downloadUrl = "http://www.phantastike.com/agni_yoga/simfoniya_1/zip/";
string pathToFile = @"D:\simfoniya.zip";
Task.Run(async () => await DownloadFile(downloadUrl, pathToFile))
.ContinueWith((result) => UnzipFile(pathToFile));
Console.ReadLine();
}
private static async Task DownloadFile(string downloadUrl, string pathToFile)
{
HttpClient client = new HttpClient();
using (HttpResponseMessage response = client.GetAsync(downloadUrl, HttpCompletionOption.ResponseHeadersRead).Result)
{
response.EnsureSuccessStatusCode();
using (Stream contentStream = await response.Content.ReadAsStreamAsync(),
fileStream = new FileStream(pathToFile, FileMode.Create, FileAccess.Write, FileShare.None, 8192, true))
{
var totalRead = 0L;
var totalReads = 0L;
var buffer = new byte[8192];
var isMoreToRead = true;
do
{
var read = await contentStream.ReadAsync(buffer, 0, buffer.Length);
if (read == 0)
{
isMoreToRead = false;
}
else
{
await fileStream.WriteAsync(buffer, 0, read);
totalRead += read;
totalReads += 1;
if (totalReads % 10 == 0)
{
Console.WriteLine($"Загружаем файл. Загружено: {totalRead:n0}");
}
}
}
while (isMoreToRead);
Console.WriteLine($"Готово! Файл загружен.");
}
}
}
private static void UnzipFile(string pathToFile)
{
if (!File.Exists(pathToFile))
{
Console.WriteLine("Указанный файл не найден.");
return;
}
Console.WriteLine("Начинаем распаковку...");
ZipFile.ExtractToDirectory(pathToFile, Path.GetDirectoryName(pathToFile));
Console.WriteLine("Готово!");
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Существует ли какой-нибудь механизм передачи объектов именно по ссылке из одного процесса в другой? Чтобы несколько программ могли взаимодействовать...
При попытке использовать в отдельном потоке вылетает ошибка SystemWindows
У меня будет программа, примерную реализацию я приведу в кодеСуть программы, вначале она получает данные из БД, затем эти данные приводит...