2012-04-19 6 views
0

PHPスクリプトがファイル(imageupload.php)をアップロードするページからファイル名を取得しようとしていますが、javascript内の別のページに表示したいfunction(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)を使用します。これは、サーバーからアップロードされたファイル名を追加したい場所でもあります。ページの利用にファイル名のページを渡すには

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

:へ

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

:から

:私は次のことを行うだろうstopImageUpload()機能を呼び出すために

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; 

    } 

答えて

1

セッション変数。 (既にセッションを使用しているので)私は、次のような何かを示唆している:

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();を持っていることを確認してください。この実行して

トラブルシューティング:あなたのunexpected ';'エラーを解決するには

<?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"]; 
     } 
    ?> 

は、私は外の$ _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> 
+0

それはまだ同じことを行い、それがアップロードされません。ファイルをロードしようとしていますが、ローディングバーが表示されているときにファイルをロードしようとしていますが、アップロードしない、またはアップロードを完了しない – user1341521

+0

オリジナルのコードを変更しようとしましたか?<?php echo $ result;?> '' <?php echo "'$ result'";?> '? – jnthnjns

+0

私は同じことをやっても同じことをやってみましたが、どこに問題があるのか​​わかりません:( – user1341521