|
|
|
Помогите рабозбраться с Jar архивом, преобразование JAR файла и передача его
|
|||
|---|---|---|---|
|
#18+
Выкачиваю из сети архивный файлик 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; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 09:14 |
|
||
|
Помогите рабозбраться с Jar архивом, преобразование JAR файла и передача его
|
|||
|---|---|---|---|
|
#18+
В общем, победить, а точнее сказать работать 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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2005, 13:40 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=32894547&tid=1478831]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 424ms |

| 0 / 0 |
