1

あるページにjavascript関数があり、別のページにファイルのアップロードに集中するphpスクリプトがあります。現在、私のファイルは正常にアップロードされています。これは素晴らしいニュースです。私の質問は、phpを使用してファイルがフォルダーに既に存在するかどうかを確認したいのですが、javascript関数を使用して、これがtrueの場合はファイルが既に存在することを示すメッセージを表示したいということです。これはどのように行うことができますか?

以下は、ファイルが存在するかどうかをチェックするphpコードです。

if (file_exists("upload/" . $_FILES["fileImage"]["name"]))
  {

  }

以下は、ファイルのアップロードが停止したときのJavascript関数です。現時点では、ファイルがアップロードされない場合は、ファイルのアップロード中にエラーが発生したことを示すメッセージが表示され、ファイルが正常にアップロードされた場合はメッセージが表示されますが、ファイルがアップロードされない場合は、ファイルが原因であるという追加のメッセージが必要です。すでに存在する場合は、ファイルがすでに存在することを示すメッセージを表示したいと思います。

 function stopImageUpload(success){
          var result = '';
          if (success == 1){
             result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
          }
          else {
             result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
          }
}

PS誰も答えを入れないでください。なぜ私はphpコードにエコーを入れないのですか。ユーザーが実際にphpスクリプトに移動することはないので、そのようにしたくありません。

4

3 に答える 3

1

あなたは言う。

PS誰も答えを入れないでください。なぜ私はphpコードにエコーを入れないのですか。ユーザーが実際にphpスクリプトに移動することはないので、そのようにしたくありません。

とにかくいくつかのphpコードを実行する必要があります。したがって、これを何らかの方法で行う必要があります。次に、任意の方法を使用してユーザーに情報を表示します。

すべてのコードがないので、htmlコードにinput [type = file]があると仮定します。したがって、入力の値とともにajaxを使用する必要があります。サーバーに送信し、ファイル名がすでに存在するかどうかを確認してから、phpからajaxを使用してtrueまたはfalseで応答し、ファイルが存在するかどうかをユーザーに通知するjavascriptのコードを実行します。あなたはそれをするためにjQueryを使うことができます:

        $("#myInput").on("change",function(event){
             $.getJSON("checkFileService.php",{filename:$(event.currentTarget).val()},
        function(datas){
         if(datas.exists === true){
          doSomething();
         else{
          doSomethingElse();
         }
        }
       }

詳細については、jQueryajaxapiを確認してください

クライアントスクリプトを機能させるには、{"exists":true}のようなjson文字列を出力するphpスクリプトを作成する必要があります。

于 2012-04-14T13:04:02.717 に答える
1

ファイルが存在するかどうかをチェックするあなたのPHPコードでは

else{
echo 2;
}

あなたのJSコードでelseclausuleを実行します

if(success == 2){
result = '<span class="emsg">File already exist!</span><br/><br/>';
}

これは迅速な解決策ですが、JS/PHPを介してより複雑なファイル処理を行う方法を提供します。例えば。PHPがデータ1を返す場合、すべてが正常です。2の場合はファイルが存在し、3の場合はファイルが大きすぎます。4の場合は拡張子が正しくないファイル、5の場合は他のファイルなどです。

私がC/C ++を学ぶときに遭遇したこの方法(Cではこの方法は標準的なもののようです)。このようにして、コードの一部がどのように進んだかについての情報を提供できます。

それでも、名前が無関係である場合、ファイルのランダムな名前を生成します。ファイルの名前が重要である場合は、AJAXを使用してチェックし、情報を表示するか、ファイル名の後に番号を追加します(file(1 ).xyz、file(2).xyz、file(3).xyz)。それはあなたが達成しようとしていることに依存します。

于 2012-04-14T13:42:52.907 に答える
1

@safarovファイルがすでに存在するかどうかを確認し、新しくアップロードされたファイルに別の名前を書き込む関数の例を教えていただけますか?

テキスト1のみを含む「filenamecounter.txt」という名前の単純なテキストファイルを保存/アップロードします。

<?php
    //Get the original name of file
    $tmp_name = $_FILES["filename"]["tmp_name"];

    //Get/Read File Name Counter
    $filenamecounter = file_get_contents('filenamecounter.txt');

    //If it is less than 10, add a "0"/Zero to make it like 01,02,03
    if (strlen($filenamecounter) <= 1){
        $filenamecounter = str_pad($filenamecounter, 2, '0', STR_PAD_LEFT);
        }

    //Assign Filename + Variable
    $name = "filename".$filenamecounter.".txt";

    //Save file with new name
    move_uploaded_file($tmp_name, $name);

    //write quotecounter to file.
    $filenamecounter++;
    file_put_contents("filenamecounter.txt", $filenamecounter);
?>
于 2012-04-14T14:50:41.753 に答える