0

ファイルのアップロードが停止すると、アップロードが成功したかどうかを示すメッセージが表示され、さらに重要なことに、以下のコードを使用してアップロードされたファイルの名前が表示される関数があります。

 $('.listImage').append(nameimagefile + '<br/>');

上記のこのコードは、ファイル入力から選択されたファイルの名前を取得します。ただし、これの問題は、ファイル入力にファイルの名前を入力したくないということです。代わりに、サーバーにアップロードされるファイルの名前が必要です。

たとえば、両方とも tulips.png である 2 つのファイルをアップロードした場合、それらはサーバーに保存され、tulips.png および tulips2.png としてアップロードされますが、使用しているため$('.listImage').append(nameimagefile + '<br/>');、両方のファイル名が「tulips.png」として表示されます。私が欲しいものではありません。

ここで、入力ファイルの値からではなく、ファイルにアップロードされたときに保存された名前からファイルの名前を取得したいと決めました。

これをjavascript関数でどのようにコーディングできますか?

javascript 関数と php スクリプトは別のページにありますが、php スクリプトで javascript 関数へのコールバック関数を使用します。

以下はフォームコードです。

<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='stopImageUpload(this);' class='imageuploadform' >
    <p>Image File: <input name='fileImage' type='file' class='fileImage' />
    <input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' />
    </p> 
    <ul class='list'></ul>
    </form>

以下は、ファイルの名前を取得し、ファイルが成功したかどうかを示すメッセージを表示する JavaScript 関数です。

   function stopImageUpload(success){

          var nameimagefile = $('.fileImage').val();
          var result = '';
          if (success == 1){
             result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
             $('.listImage').append(nameimagefile + '<br/>');
          }
          else {
             result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
          }

 return true;

}

最後に、javascript コールバック関数を使用した php スクリプトを以下に示します。サーバーのフォルダーにファイルが存在するかどうかにかかわらず、ファイルをアップロードするだけです。存在する場合は、ファイル名の末尾に名前を追加して別のファイル名を付けます。存在しない場合は、同じ名前のファイルをアップロードします。

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $parts = explode(".",$_FILES['fileImage']['name']);
    $ext = array_pop($parts);
    $base = implode(".",$parts);
    $n = 2;

    while( file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++;
    $_FILES['fileImage']['name'] = $base."_".$n.".".$ext;

    move_uploaded_file($_FILES["fileImage"]["tmp_name"],
    "ImageFiles/" . $_FILES["fileImage"]["name"]);
    $result = 1;

}
    else
      {
      move_uploaded_file($_FILES["fileImage"]["tmp_name"],
      "ImageFiles/" . $_FILES["fileImage"]["name"]);
      $result = 1;

      }


?>

<script language="javascript" type="text/javascript">window.top.window.stopImageUpload(<?php echo $result;?>);</script>

うまくいけば、それがあなたが必要とするすべての情報であり、ありがとう.

4

1 に答える 1

1

$_FILES["fileImage"]["name"]js関数に引数として渡すことができます。Javascriptはクライアント側の言語であるため、サーバー上のファイルを処理できません。

于 2012-04-18T06:51:24.943 に答える