Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опять про работу с архивами, Archive::Tar 
:(
    Опции темы
igorold
Дата 6.5.2006, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Я вычислил, что если архив не находится в каталоге скрипта, то он не разархивируется (линукс, мозилла)
я передаю имя файла из формы :
Код

<form name="import" method="POST" action="/ComplexDB/index.pl" enctype="multipart/form-data">
<input type="file" name="importarc">

в скрипте:
Код

my $UpArhiv = $self->query()->upload('importarc');
my $tarf = "$UpArhiv";

Код

если имя файла без кавычек:
my $tarf = $UpArhiv;  
то выдается ошибка: 
Error Undefined subroutine Fh::read at /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/Archive/Tar.pm line 251

Как сделать, чтобы я мог работать с архивом, выбранным в любом каталоге?
Один из вариантов, конечно - закачать архив на сервер и там с ним проработать, если других советов не будет,
я так и сделаю, а нельзя проще сделать? 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 6.5.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



покумекай с правами на папки chmod 755

Добавлено @ 12:53 
вот протестил... создал папочку 111 положил туды архив и...
Код
#!/usr/bin/perl
use Archive::Tar;

my $tarf = './111/k-30.03.06_07.00.tgz';
my $tar = Archive::Tar->new();
$tar->read($tarf, 1);
my @fl = $tar->list_files();
foreach my $nfile (@fl) {
  print "\t", $nfile,"\n";
}


Цитата
D:\>1.pl
        dbreport
        fm-errors
        fm-reports
        linux-log/
        linux-log/syslog
        linux-log/messages
        linux-log/kernel_err
        linux-log/daemons_err
        linux-log/apcupsd
        pap_err
        pilot/
        pilot/pilot.log
        sys-stat


Добавлено @ 12:54 
тоже проверил во фряхе smile chmod 755 поставил и заработало... может у тя тоже ;) 

Это сообщение отредактировал(а) nitr - 6.5.2006, 12:54


--------------------
PM   Вверх
igorold
Дата 6.5.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



смысл не совсем в том, что архив не берется из подкаталога.
Смысл в том, что, когда я открываю файл и задаю подкаталог:
Код

my $tarf = './unzipped/kazan-30.03.06_07.00.tgz';

то он прекрасно открывается, а когда я выбираю этот архив через форму HTML(в данном примере $UpArhiv), то 
для открытия передается только имя и архив не открывается!
Если я также выбираю просто файл (в данном примере $ImportText), то я его могу закачать на сервер:
Код

    my $ImportText  = $self->query()->upload('importfile');
    my $UpArhiv = $self->query()->upload('importarc');
......................
                open (FILE2, "> $AbsolutePath/attached$Path/$NewFilename") or die $!;
                binmode $ImportText;
                binmode FILE2;
                while (<$ImportText>) {
                    print FILE2;
                }
                close FILE2;

в данном примере FILE2 - появляется на сервере .... а с архивом аналогично не могу проработать ... може я неправильно передаю имя файла ? 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
nitr
Дата 6.5.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



т.е.? у тебя архив передаётся пролсто имя? без путей? тогда естественно неверно передаёшь этот параметр... а замем тебе подкаталоги?

Добавлено @ 14:08 
обдумай свой алгоритм, может чего нового придумаешь... я не понимаю зачем используешь такие пути smile 


--------------------
PM   Вверх
igorold
Дата 6.5.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



мне нужно, чтобы архив можно было закачать с разных компьютеров сети, без привязки к каталогу.
Когда мы выбираем файл для закачки на сервер, то нам не важно где он находится, мы нажимаем на
HTML-форме кнопочку "файл", появляется форма выбора файла и все ... качаем его ...
но то же самое не проходит для архивов ... вот в чем для меня загадка .... 
может это свойство пакета, тогда остается только качать его на сервер и там делать с ним чего хош ....   

вообще, если я делаю выбор файла в линуксе с использованием Мозиллы, то если я выведу на печать то, что выбрал из переменной:
Код

my $UpArhiv = $self->query()->upload('importarc');

то выведется ТОЛЬКО имя файла, если то же самое сделаю с win-машины из EI, то выдается полное имя с подкаталогами! 

Это сообщение отредактировал(а) igorold - 6.5.2006, 14:58


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.