Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для GENDALF_ISTARI
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
.NET 4.x

Распаковать архив на странице

17.07.2016, 04:22. Показов 1069. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ASP NET MVC распаковать архив
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
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms;
using Ionic.Zip;
using path_link_files;
 
 
namespace WebUnrealWebForm
{
    public partial class upload : System.Web.UI.Page
    {
        Arhiv_pack_unpack arhiv=new Arhiv_pack_unpack();
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
 
        protected void Unnamed1_Click(object sender, EventArgs e)
        {
            string path_dir = string.Empty,path_file;
 
            
            try
            {
                if (FileUpload1.PostedFile!=null)
                {
 
                    path_file = Path.GetFileName(FileUpload1.PostedFile.FileName);
                    path_dir = Server.MapPath("Projects") + "\\" +path_file;
                    FileUpload1.SaveAs(path_dir);
                    //arhiv.unpack_file(path_file, Server.MapPath("Projects"));
                    System.Diagnostics.Process RarProc = new System.Diagnostics.Process();
                    RarProc = System.Diagnostics.Process.Start(Environment.CurrentDirectory+"\\arhivator\\rar.exe x "+path_dir+" "+ Server.MapPath("Projects"));
 
                    ////Ждем завержения
                    RarProc.WaitForExit();
 
                    ////Если ошибка
                    if (RarProc.ExitCode < 0)
                    {
                        Response.Write("<script>alert('Ошибка архивирования документа - " + RarProc.ExitCode.ToString() + " ');</script>");
                    }
 
                    Label1.Text = "Проект: " + path_file + " Загружен!";
 
                }
                else
                {
                    Label1.Text = "Пустой путь!";
                }
            }
            catch (Exception ex)
            {
 
                Label1.Text = "Ошибка Загрузки: "+ex.Message;
            }
 
        }
 
        
    }
}
суть такая файл архива zip, rar распаковываеться на сайте
сначала загружаеться в папку на сайте и там распаковываеться
рыл инфу не нашол как это решить подкинте как ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2016, 04:22
Ответы с готовыми решениями:

Распаковать архив не имея winrar, 7zip
Нужно распаковать архив (rar, zip). При этом на пк не имея ни winrar, ни 7zip, ни чего еще! И общий прогресс нужно выводить на progress...

Чем пользоваться для того чтобы распаковать архив
Привет Подскажите пож - та чем пользоваться для того чтобы распаковать архив?

Как распаковать ZIP архив и поместить содержимое в List<>
Есть ZIP архив с множеством файлов (текстовых(txt,html,htm,cs,cpp), и картинок(png,jpeg)) Как его распаковать и поместить содержимое в...

2
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
17.07.2016, 12:16
Через NuGet поищи библиотеки архиваторов
как вариант https://dotnetzip.codeplex.com
1
 Аватар для SerVal
37 / 36 / 9
Регистрация: 16.04.2015
Сообщений: 283
18.07.2016, 03:46
Ну, как-то так(как пример). Для zip архива.
Закачали архив на сервер. String archive_file_name.

Добавляем файлы из архива в базу данных:

Кликните здесь для просмотра всего текста

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
using System.IO.Compression;
 
        protected void InsertDecompressedFiles(String archive_file_name)
        {
            Boolean bResult;
            process_status = "Inserting workunits. ";
            process_status += "Процесс идёт.";
 
            String str_error = null;
            Int32 n_wu_processed = 0;
            Int32 n_wu_inserted = 0;
 
            FileStream fs = new FileStream(archive_file_name, FileMode.Open, FileAccess.Read, FileShare.Read);
            ZipArchive zip_archive = new ZipArchive(fs, ZipArchiveMode.Read, false);
            Byte[] wu_binary_data = null; // для распакованного файла
 
            SqlConnection sqlConn = new SqlConnection(GerasimConfiguration.dbConnectionString);
            sqlConn.Open();
 
            foreach (ZipArchiveEntry entry in zip_archive.Entries)
            {
                String wu_name = Path.GetFileNameWithoutExtension(entry.Name); // имя файла в архиве
                wu_binary_data = new Byte[entry.Length]; // буфер для распакованного файла
 
                using (BinaryReader binReader = new BinaryReader(entry.Open()))
                {
                    try
                    {
                        binReader.Read(wu_binary_data, 0, wu_binary_data.Length);
                    }
                    catch (Exception ex)
                    {
                        process_status += "<br />" + ex.Message;
 
                        sqlConn.Close(); sqlConn.Dispose();
                        zip_archive.Dispose(); fs.Close(); fs.Dispose();
                        System.IO.File.Delete(archive_file_name);
                        return;
                    }
                }
 
                // вставляем в базу
                bResult = InsertWu(wu_name, platform_name, wu_binary_data, ref sqlConn, out str_error);
 
                n_wu_processed++;
 
                if (str_error != null)
                {
                    sqlConn.Close();
                    process_status = str_error; stop_flag = true;
                    return;
                }
                if (bResult)
                {
                    n_wu_inserted++;
                }
 
                process_status = "Просмотрено в архиве:" + n_wu_processed.ToString() + "<br />Добавлено:" + n_wu_inserted.ToString();
 
                if (stop_flag == true) { sqlConn.Close(); break; }
                        //Thread.Sleep(20);
            }
 
            sqlConn.Close(); sqlConn.Dispose();
            zip_archive.Dispose(); fs.Close(); fs.Dispose();
 
            System.IO.File.Delete(archive_file_name);
            process_status += "<br />Процесс завершён.";
 
        }

А для Rar-архива только запускам rar-а.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2016, 03:46
Помогаю со студенческими работами здесь

Распаковать cab архив?
Как можно распаковать cab архив программно в С++?

Как распаковать архив
Есть .rar с eclips'ом но во время распаковки ошибка - превышение длины имени файла или что-то пипа того.Мне препод говорил что нужно...

Распаковать архив из памяти
В памяти хранится архив (как массив байтов). Нужно никуда не сохраняя его, разархивировать. Может с MemoryStream потанцевать? Тип архива...

Не могу распаковать архив
Буквально час назад все работало, но теперь нет. Архив скачивался, затем распаковывался, а теперь не пойму в чем причина private...

Программно распаковать архив
Подскажите как программно распаковать архив rar в скрытом режиме и с заменой файлов(если такие существуют) Делаю так: var...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru