0

私のサイトにはファイルアップロード機能があり、phpスクリプトページにリダイレクトするのではなく、スクリプトから返されたメッセージを表示するiframeが必要です。だからここに私のhtmlがあります:

<iframe class="iframe" name="my_iframe" src="upload_file.php" style="display:none;"></iframe>
<form id="uploadForm" action="upload_file.php" method="post" enctype="multipart/form-data" target="my_iframe">

したがって、基本的には、アップロードプロセスが終了し、スクリプトがメッセージを返すまで、 iframeを非表示にしたいと考えています。これが私のphpスクリプトです:

<?php
    ini_set('display_errors', 'On');
    error_reporting(E_ALL | E_STRICT);
    session_start();
    $allowedExts = array("doc", "docx");
    $extension = pathinfo( $_FILES["upload"]["name"],PATHINFO_EXTENSION);
    $username = $_SESSION["username"];

    if (($_FILES["upload"]["size"] < 200000)
    && in_array($extension, $allowedExts)) {
        if ($_FILES["upload"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
        }
        else
        {
            echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
            echo "Type: " . $_FILES["upload"]["type"] . "<br />";
            echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
            echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";

            $dir_exists = is_dir("/disks/*/*/*/*/". $_SESSION["FirstName"] ."-".$_SESSION["username"]."/");
            $file_exists = file_exists("/disks/*/*/*/*/".$_SESSION["FirstName"] ."-".$_SESSION["username"]."/" . $_FILES["upload"]["name"]);
            $folderName=$_SESSION["FirstName"];
            $baseDir = "/disks/*/*/*/*/";
            // Create directory if it does not exist
            if (! $dir_exists) {
                if (is_writable($baseDir)) {
                    mkdir($baseDir . $_SESSION["FirstName"]."-".$_SESSION["username"]);
                } else {
                    trigger_error($baseDir.  " is not writeable");
                }
            }


            if ($file_exists) {
                echo $_FILES["upload"]["name"] . " already exists. ";
            } else {
                $link = new PDO('mysql:host=***;dbname=***;charset=UTF-8','***','***');
                $proptype = $_POST["prop_cat"];
                $stmt = $link->prepare("UPDATE Table SET `PType`=:proptype WHERE Username=:username");
                $stmt->bindParam(':username', $username);
                $stmt->bindParam(':proptype', $proptype);
                $stmt->execute();
                move_uploaded_file($_FILES["upload"]["tmp_name"],
                $baseDir. $_SESSION["FirstName"] ."-".$_SESSION["username"]."/". $_FILES["upload"]["name"]);
                echo "Stored in: " . $baseDir. $_SESSION["FirstName"] ."-".$_SESSION["username"]."/". $_FILES["upload"]["name"];
            }
        }
    } else {
        echo "Invalid file";
    }
?>

基本的に私の質問を要約すると、アップロードが完了するまでiframeを非表示にし、ユーザーがアラートボックスのように閉じることができるというメッセージとともに表示するにはどうすればよいですか?

4

1 に答える 1

0

Iframe を非表示にしてから上部に表示するのではなく、アップロードの最後にエコーすることはできますか?

if ($file_exists) {
            echo $_FILES["upload"]["name"] . " already exists. ";
        } else {
            $link = new PDO('mysql:host=***;dbname=***;charset=UTF-8','***','***');
            $proptype = $_POST["prop_cat"];
            $stmt = $link->prepare("UPDATE Table SET `PType`=:proptype WHERE Username=:username");
            $stmt->bindParam(':username', $username);
            $stmt->bindParam(':proptype', $proptype);
            $stmt->execute();
            move_uploaded_file($_FILES["upload"]["tmp_name"],
            $baseDir. $_SESSION["FirstName"] ."-".$_SESSION["username"]."/". $_FILES["upload"]["name"]);
            echo "Stored in: " . $baseDir. $_SESSION["FirstName"] ."-".$_SESSION["username"]."/". $_FILES["upload"]["name"];

            /// load the iframe now ///////////////
            echo '<iframe class="iframe" name="my_iframe" src="upload_file.php"></iframe>';
            ///////////////////////////////////////
         }
于 2012-10-08T20:29:29.993 に答える