0

PHP スクリプトがファイルをアップロードするページ (imageupload.php) からファイル名を取得しようとしており、JavaScript 関数 (QandATable.php) 内の別のページに表示したいと考えています。しかし、私はこれを行う方法がわかりません

関連するすべてのコードを示しますので、それに従うことができ、何が起こっているのかを理解することができます.

更新: 以下に、ファイルのアップロード方法の手順を示します。以下のコードは、ファイルを正常にアップロードします。

以下はフォーム (QandATable.php) です。

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 
<label>Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label class='imagelbl'>" + 
"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 
"</p><ul class='listImage' align='left'></ul>" +
"<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>"); 

ユーザーがフォームを送信すると同じページで、以下の関数に移動し、検証をチェックし、検証がクリアされるとstartImageUpload()関数に移動します。

 function imageClickHandler(imageuploadform){ 
      if(imageValidation(imageuploadform)){ 
          return startImageUpload(imageuploadform); 
      } 
      return false;
  }

検証がない場合は、以下の JS 関数 (QandATable.php) に進み、そこでファイル入力を非表示にし、ファイルのアップロードが行われる imageupload.php にフォームを送信します。ファイルがアップロードされると、stopImageUpload() 関数 (QandAtable.php) が呼び出され、そこでファイルがアップロードされたかどうかに関するメッセージが表示されます。これは、サーバーからのファイルの名前が必要な場所です。添付。

以下は startImageUpload() 関数です。

var sourceImageForm;

function startImageUpload(imageuploadform){

$(imageuploadform).find('.fileImage').css('visibility','hidden');
sourceImageForm = imageuploadform;

return true;
        }

以下は、ファイル (imageupload.php) をアップロードする php スクリプトです。

     <?php

session_start();

$result = 0;

   if ($_FILES["fileImage"]["error"] > 0) {
      echo "Error: " . $_FILES["fileImage"]["error"] . "<br />";
      } else {
      echo "Upload: " . $_FILES["fileImage"]["name"] . "<br />";
      echo "Type: " . $_FILES["fileImage"]["type"] . "<br />";
      echo "Size: " . ($_FILES["fileImage"]["size"] / 1024) . " Kb<br />";
      echo "Stored in: " . $_FILES["fileImage"]["tmp_name"];
      }

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $_SESSION['fileImage']['name'] = $_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"],
    $_SESSION['fileImage']['name'] = $_FILES['fileImage']['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>

最後にアップロードが完了すると、stopUploadImage() 関数 (QandATable.php) に戻り、ファイルが正常にアップロードされたかどうかに関するメッセージを表示します。これは、サーバーからアップロードされたファイル名を追加する場所でもあります。

   function stopImageUpload(success){

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

    return true;

    }
4

1 に答える 1

1

関数を呼び出すにstopImageUpload()は、次のようにします。

から:

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

に:

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

ファイル名ページをページに渡すには、セッション変数を使用します。次のようなものをお勧めします(すでにセッションを使用しているため):

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

session_start();これらの変数を渡したいすべてのページの上部にあることを確認してください。

これを実行してトラブルシューティングします。

<?php

    if ($_FILES["file"]["error"] > 0) {
      echo "Error: " . $_FILES["file"]["error"] . "<br />";
      } else {
      echo "Upload: " . $_FILES["file"]["name"] . "<br />";
      echo "Type: " . $_FILES["file"]["type"] . "<br />";
      echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
      echo "Stored in: " . $_FILES["file"]["tmp_name"];
      }
    ?>

エラーを解決するためunexpected ';'に、 $_SESSION 行を : の外に移動しました。

<?php

session_start();

$result = 0;

   if ($_FILES["fileImage"]["error"] > 0) {
      echo "Error: " . $_FILES["fileImage"]["error"] . "<br />";
      } else {
      echo "Upload: " . $_FILES["fileImage"]["name"] . "<br />";
      echo "Type: " . $_FILES["fileImage"]["type"] . "<br />";
      echo "Size: " . ($_FILES["fileImage"]["size"] / 1024) . " Kb<br />";
      echo "Stored in: " . $_FILES["fileImage"]["tmp_name"];
      }

if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $_SESSION['fileImage']['name'] = $_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"]);
    //The error was thrown because you had $_SESSION inside the move_upload_file()
    //Can't have a ; inside a function
    //However, you need to remove this $_SESSION anyway, it is already declared above, 
    //it wouldn't work here anyway since your code breaks apart the $_FILES array.
    //$_SESSION['fileImage']['name'] = $_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>
于 2012-04-19T21:06:26.673 に答える