powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите рабозбраться с Jar архивом, преобразование JAR файла и передача его
2 сообщений из 2, страница 1 из 1
Помогите рабозбраться с Jar архивом, преобразование JAR файла и передача его
    #32893725
Andrey Spirin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выкачиваю из сети архивный файлик JAR формата (внутренне тот же самый ZIP), вытаскиваю из него кое какую инфу из текстового файлика, меняю её, и кладу обратно в файлик (использую overwrite() из Archive::Zip). Самое не понятное, что когда я просто отрабатывал код скрипта для вытаскивания инфы из архива её преобразование и перезапись архива просто в файловой системе, без использования WEB-сервера то файлик перезаписывался без проблем и нужная мне инфа сохранялась. Решил тот же код использовать на файлике, который скачивается из сети, и далее в преобразованном виде должен будет быть отправлен пользователю.
Ниже приведена часть кода, которая делает перезапись. Сервер Apache-2.0
Помогите кто чем может :). Есть мысль вызвать тот код который работал в файловой системе в виде конструкции `perl.exe name_work_code_file.pl` Но даже, если это и поможет, всё равно вопрос остаётся открытым, а почему нельзя так как я использую в данном скрипте?
Всем откликнувшимся премного благодарен, Андрюха
----------------------

if($response->is_success) {
use HTTP::Request::Common;
$response = $browser->request( GET($url), $filespec ) or die "Can't get file from $url";

$zip = Archive::Zip->new();
if ($zip->read($filespec) == 0) {
$content = $content_jar;
$fh = new Archive::Zip::MemberRead($zip, "META-INF/MANIFEST.MF");
while (defined($line = $fh->getline())) {
push(@file, $line."\n");
}
} else {
$content = $content_jad;
open(FF, "$filespec");
@file = <FF>;
close(FF);
}

foreach $i(@file) {
if($i =~ /MIDlet-Jar-URL:/ && (($i !~ /http:\/\//) || ($i !~ /www./ ))) {
$i =~ s/MIDlet-Jar-URL:\s*/MIDlet-Jar-URL: $jad_url/;
}

if($i =~ /MIDlet-Install-Notify:/) {
$inst_notify = 'true';
$i ="MIDlet-Install-Notify: $inst_link?$id\n";
}

if($i =~ /MIDlet-Delete-Notify:/) {
$del_notify = 'true';
$i = "MIDlet-Delete-Notify: $inst_link?$id\n";
}
}

if($inst_notify eq 'false') {
unshift(@file, "MIDlet-Install-Notify: $inst_link?$id\n");
}

if($del_notify eq 'false') {
unshift(@file, "MIDlet-Delete-Notify: $inst_link?$id\n");
}

print "Content-Type: $content\n\n";

if("$content" eq "$content_jad") {
print @file;
} else {
$zip = Archive::Zip->new();
$zip->read($filespec);
$zip->removeMember("META-INF/MANIFEST.MF");
$zip->addString("@file", "META-INF/MANIFEST.MF");
die 'Can\'t rewrite archive file' unless $zip->overwrite() == 0;

open(FF, "$filespec");
binmode(FF);
binmode(STDOUT);
print <FF>;
close(FF);
}

} else {
print "Content-Type: text/html\n\n";
print "<html><body>Error mes: ".$response->message."</body></html>";
exit;
}
...
Рейтинг: 0 / 0
Помогите рабозбраться с Jar архивом, преобразование JAR файла и передача его
    #32894547
Andrey Spirin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, победить, а точнее сказать работать overwrite() нормально мне так и не удалось, если кому интересно, то вышел из ситуации следующим образом. Создавал архив с другим именем, писал тута все members из того архива, который хотел перезаписывать, все, кроме той, которую конкретно изменю. Далее в новый архив добавлял уже изменённый мембер. Сохранял архив новый, удаляя старый файл архива. Далее новый файл пересылал пользователю. Да, немного муторно, но что-то по другому никак не получается, может быть я не то что-то делал. Если кто-то знает способ лучше, рассмотрю любые предложения. Спасибо за внимание, Андрюха
--------------
$zip1 = Archive::Zip->new();
$find_member = $zip->memberNamed( "META-INF/MANIFEST.MF" );
@members = $zip->members();

foreach $i (@members) {
if($find_member != $i) {
$zip1->addMember($i);
}
}

$member = $zip1->addString("@file", "META-INF/MANIFEST.MF");
$member->desiredCompressionMethod( COMPRESSION_DEFLATED );
die 'write error' unless $zip1->writeToFileNamed( $filespec.".zip" ) == 0;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите рабозбраться с Jar архивом, преобразование JAR файла и передача его
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]