Показать сообщение отдельно

  #15  
Старый 15.11.2007, 10:53
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
С нами: 9999746

Репутация: 1318


По умолчанию

Cactuz, этот скрипт написан под PHP5+ZIP. Ошибка "Неверный тип файла" вызвана тем (как правильно заметили), что ты загружаешь не JAR файл, или у твоего апача криво настроено поддерживаемые MIME-типы. Я изменил скрипт на тупую проверку расширения загружаемого файла, это должно избавить от этой ошибки. И я обратил твоё внимание на то, что для работы этого скрипта НЕОБХОДИМ МОДУЛЬ РАБОТЫ С ZIP. Модуль, если его нету в составе твоего PECL смотри тут - http://pecl.php.net/package/zip. Если ты делаешь это под Никсы, тогда пересобери пхп с опцией --enable-zip, если под Винды - просто раскоменть строчку с php_zip.dll в php.ini. Интерфейс работы с ZIP в PHP4 и PHP5 сильно разнится, поэтому если тебе нужна была реализация под PHP4 нужно было это уточнить.

PHP код:
<?php

    
// JAD Descriptor generator by groundhog, 2007 (c) DaMaGeLaB

    
define("JAR_STORAGE_URL""jar");

    function 
prepeareJADFile($jarArchivePath$manifestPath$jarArchiveUrl) {
        
$zipObject = new ZipArchive;

        if (!
is_object($zipObject)) return false;

        
$ret $zipObject->open($jarArchivePath);
        if (!
$ret) return false;

        
$manifest $zipObject->getFromName($manifestPath);

        if (!
is_string($manifest) || strlen($manifest) <= 0) return false;
        
$manifest trim($manifest);

        
$jarFileSize filesize($jarArchivePath);
        if (!
$jarFileSize) return false;

        
$MIDletJarSize  sprintf("MIDlet-Jar-Size: %d"$jarFileSize);
        
$MIDletJarURL   sprintf("MIDlet-Jar-URL: %s"$jarArchiveUrl);
        
$jadFileContent sprintf("%s\n%s\n%s\n"$manifest$MIDletJarSize$MIDletJarURL);

        return 
$jadFileContent;
    }
    
////////////////////////////////////////////////////////////////////////////////////

    
if (count($_FILES) <= 0) {
        print(
"<html>");
        print(
"<head>");
        print(
"<title>Генератор JAD файлов</title>");
        print(
"</head>");
        print(
"<body>");
        print(
"<h1>Укажите Ваш JAR файл:</h1>");
        print(
"<form method=\"post\" enctype=\"multipart/form-data\">");
        print(
"<input name=\"jar_file\" type=\"file\">");
        print(
"<br><br>");
        print(
"<input name=\"upload\" type=\"submit\" value=\"Загрузить\">");
        print(
"</form>");
        print(
"</body>");
        print(
"</html>");
    } else {
        if (!isset(
$_FILES["jar_file"]) || !is_file($_FILES["jar_file"]["tmp_name"]))
            die (
"Не могу прочитать загруженный файл");

        
$fileExt strtolower(substr($_FILES["jar_file"]["name"], strrpos($_FILES["jar_file"]["name"], ".") + 1));

        if (
$fileExt != "jar") die("Неверный тип файла!");

        
$jadFileName substr($_FILES["jar_file"]["name"], 0strrpos($_FILES["jar_file"]["name"], ".")) . ".jad";
        
$resultUrl   "http://" $_SERVER["HTTP_HOST"] . "/" JAR_STORAGE_URL "/" $_FILES["jar_file"]["name"];
        
$jadContent  prepeareJADFile($_FILES["jar_file"]["tmp_name"], "META-INF/MANIFEST.MF"$resultUrl);

        
move_uploaded_file($_FILES["jar_file"]["tmp_name"], JAR_STORAGE_URL "/" $_FILES["jar_file"]["name"]);

        
header("Content-Type: text/vnd.sun.j2me.app-descriptor");
        
header("Content-Disposition: attachment; filename=\"{$jadFileName}\"");
        print(
$jadContent);
}

?>
 
Ответить с цитированием