Тест загрузки постлета будет работать, но не апплет

#java #php #applet

#java #php #апплет

Вопрос:

Я использую апплет загрузки java HTTP под названием «Postlet». Я настроил PHP-скрипт для сохранения файла и сохранения имени файла в базе данных. Когда я использую простую тестовую форму HTML для загрузки одного изображения, она работает нормально, но она не работает, когда я использую фактический апплет, даже если я выбираю только один файл.

Java-апплет действует так, как будто все прошло успешно, сообщая, что загрузка изображения прошла успешно, но файл нигде не найден. Я даже использовал новый апплет с упрощенным файлом PHP, и апплет снова говорит, что все прошло успешно. Но он ничего не вводил в базу данных и не загружал файл.

Мой скрипт здесь за вычетом некоторых материалов MySQL и файловых каталогов для мер безопасности: P

 <?php
session_start();


$albumID = $_SESSION['albumID'];
$author = 1;
/*
The following file enables the uploading of each image from the java applet.

PLEASE NOTE, THIS FILES IN ITS PRESENT FORM IS A MASSIVE SECURITY RISK, AND
SHOULD NOT BE USED WITHOUT DOING EITHER OF THE FOLLOWING:

- PROTECTING THE ACCESS OF THE FILE BY THE USE OF SESSION VARIABLES (DO NOT
  PROTECT IT BY USING HTTP PASSWORDS)
- ENSURING THAT UPLOADED FILES ARE NOT ACCESSIBLE TO THE WEB (UPLOAD FILES
  TO A DIRECTORY ABOVE THE DOCUMENT ROOT)
*/

/*
AS OF POSTLET 0.11, POSTLET READS THE MESSAGES SENT BACK TO IT, AND NOW
IS AWARE OF WHETHER OR NOT AN UPLOAD HAS BEEN SUCCESSFUL. MORE INFORMATION
ABOUT THE FORMAT OF REPLY MESSAGES CAN BE FOUND ON THE POSTLET WEBSITE 
http://www.postlet.com/install/
*/

// Configuration ---------------------------------------------------------------
// Change the below path to the folder where you would like files uploading.
// e.g. "/home/yourname/myuploads/"
// or "c:phpuploads"
// Note, this MUST have the trailing slash.
$sql = "SELECT folder FROM albums WHERE id='".$albumID."'";
$result = mysql_query($sql);
$album = mysql_fetch_array($result);
$albumFolder = $album['folder'];
// Whether or not to allow the upload of specific files
$allow_or_deny = true;
// If the above is true, then this states whether the array of files is a list of
// extensions to ALLOW, or DENY
$allow_or_deny_method = "allow"; // "allow" or "deny"
$file_extension_list = array("jpg","png");
// -----------------------------------------------------------------------------
if ($allow_or_deny){
    if (($allow_or_deny_method == "allow" amp;amp; !in_array(strtolower(array_pop(explode('.', $_FILES['userfile']['name']))), $file_extension_list))
        || ($allow_or_deny_method == "deny" amp;amp; in_array(strtolower(array_pop(explode('.', $_FILES['userfile']['name']))), $file_extension_list))){      
        // Atempt to upload a file with a specific extension when NOT allowed.
        // 403 error
        header("HTTP/1.1 403 Forbidden");
        echo "POSTLET REPLYrn";
        echo "POSTLET:NOrn";
        echo "POSTLET:FILE TYPE NOT ALLOWEDrn";
        echo "POSTLET:ABORT THISrn"; // Postlet should NOT send this file again.
        echo "END POSTLET REPLYrn";
        exit;
    }
}
$newFileName = time() . "-" . $_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$newFileName))
{   
    $sql = "INSERT INTO images(file, album, author) VALUES('".$newFileName."', '".$albumID."', '".$author."')";
    $result = mysql_query($sql);
    if($result) {
    // All replies MUST start with "POSTLET REPLY", if they don't, then Postlet will
    // not read the reply and will assume the file uploaded successfully.
    echo "POSTLET REPLYrn";
    // "YES" tells Postlet that this file was successfully uploaded.
    echo "POSTLET:YESrn";
    // End the Postlet reply
    echo "END POSTLET REPLYrn";
    exit;
    } else {
        echo "Could not store into database";
    }
} 
else
{
    // If the file can not be uploaded (most likely due to size), then output the
    // correct error code
    // If $_FILES is EMPTY, or $_FILES['userfile']['error']==1 then TOO LARGE
    if (count($_FILES)==0 || $_FILES['userfile']['error']==1){
        // All replies MUST start with "POSTLET REPLY", if they don't, then Postlet will
        // not read the reply and will assume the file uploaded successfully.
        echo "POSTLET REPLYrn";
        echo "POSTLET:NOrn";
        echo "POSTLET:TOO LARGErn";
        echo "POSTLET:ABORT THISrn"; // Postlet should NOT send this file again.
        echo "END POSTLET REPLYrn";
        exit;
    }
    // Unable to write the file to the server ALL WILL FAIL
    else if ($_FILES['userfile']['error']==6 || $_FILES['userfile']['error']==7){
        // All replies MUST start with "POSTLET REPLY", if they don't, then Postlet will
        // not read the reply and will assume the file uploaded successfully.
        echo "POSTLET REPLYrn";
        echo "POSTLET:NOrn";
        echo "POSTLET:SERVER ERRORrn";
        echo "POSTLET:ABORT ALLrn"; // Postlet should NOT send any more files
        echo "END POSTLET REPLYrn";
        exit;
    }
    // Unsure of the error here (leaves 2,3,4, which means try again)
    else {
        // All replies MUST start with "POSTLET REPLY", if they don't, then Postlet will
        // not read the reply and will assume the file uploaded successfully.
        echo "POSTLET REPLYrn";
        echo "POSTLET:NOrn";
        echo "POSTLET:UNKNOWN ERRORrn";
        echo "POSTLET:RETRYrn";
        print_r($_REQUEST); // Possible usefull for debugging
        echo "END POSTLET REPLYrn";
        exit;
    }
}


?>
  

Есть идеи, почему это может не работать?

Комментарии:

1. Я отредактировал ваш комментарий в (хороший) вопрос. Вы можете удалить комментарий сейчас. Если у меня появятся какие-либо идеи, я свяжусь с вами. Похоже, вы могли бы выполнить некоторую отладку в PHP относительно того, что на самом деле прибывает.