0

私の要件は次のとおりです。ユーザーがファイルをアップロードするときは、「ファイルが既に存在する」を確認する必要があります。ファイルが存在する場合は、確認ボックスを表示する必要があります。これは私の次のコードです

if (file_exists($path . $documentName)) {
                $msg = $documentName . " already exists. ";
                ?>
                <script type="text/javascript">
                    var res = confirm('File already exists Do you want to replace?');
                    if (res == false) {
                <?php
                $msg = 'File Upload cancelled';
                ?>
                    } else {


                <?php
                if (move_uploaded_file($_FILES["document"]["tmp_name"], $path . $documentName)) {
                    $msg = $documentName . " File Replaced Successfully";
                    $successURL = $document_path . $documentName;
                }
                else
                    $msg = $documentName . "Upload Failed";
                ?>
                    }
                </script>";
                <?
            }

私の問題は、キャンセルしてもファイルが置き換えられることです。どこが間違っているか教えてください。または他のアプローチはありますか?この問題を解決するのを手伝ってください 注:jquery は許可されていません。

4

4 に答える 4

0

みんな、私はこの次のソリューションのアップロードで一緒に来ました

アップロードドキュメント.php

            $documentName = preg_replace('/[^a-zA-Z0-9.]/s', '_', $_FILES["document"]["name"]);
            if (file_exists($path . $documentName)) {
                move_uploaded_file($_FILES["document"]["tmp_name"], "F:\\Content\\enews_files\\temp\\" . $documentName);
                $msg = $documentName . " already exists. <a href='confirm.php?confirm=1&filename=" . $documentName . "&language=" . $lang . "'>Replace</a>||<a href='confirm.php?confirm=0&filename=" . $documentName . "'>Cancel</a>";
            } else {
                if (move_uploaded_file($_FILES["document"]["tmp_name"], $path . $documentName)) {
                    $msg = $documentName . " Upload Success";
                    $successURL = $document_path . $lang . '/' . $documentName;
                }
                else
                    $msg = $documentName . " Upload Failed";
            }

確認.php

include("config_enews.php");
$lang = $_GET['language'];
$path = "F:\\Content\\enews_files\\" . $lang . "\\";
//$path = "D:\\test\\test\\" . $lang . "\\";
$documentName = preg_replace('/[^a-zA-Z0-9.]/s', '_', $_GET["filename"]);
if ($_GET['confirm'] == 1) {

//echo sys_get_temp_dir();die;
    if (copy("F:\\Content\\enews_files\\temp\\" . $_GET["filename"], $path . $documentName)) {
        unlink("F:\\Content\\enews_files\\temp\\" . $_GET["filename"]);
        header("Location: uploaddocument.php?message=success&fname=$documentName&lang=$lang");
    } else {
        echo $res = move_uploaded_file($_GET["tempname"], $path . $documentName);
        echo $msg = $documentName . " Upload Failed";
        header("Location: uploaddocument.php?message=failed&fname=$documentName");
    }
} else {
    unlink("F:\\Content\\enews_files\\temp\\" . $_GET["filename"]);
    header("Location: uploaddocument.php?message=cancelled&fname=$documentName");
}

@Marek からこのスパークを受け取りました。誰かがより良い解決策を持っている場合は、親切に提供してください。

申し訳ありませんが、あなたの回答に投票するのに十分な評判がありません。

いつもご愛顧いただき誠にありがとうございます。

于 2013-08-01T04:59:52.360 に答える