2012-04-18 65 views
0

下面我有在當文件停止上傳,它會顯示一個消息上傳是否成功與否,然後更重要的是顯示上傳的使用下面這段代碼的文件名功能:如何從服務器使用javascript檢索文件名稱的名稱?

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

這上面的代碼檢索從文件輸入中選擇的文件的名稱。這個問題雖然是我不想在文件輸入中輸入文件的名稱。相反,我想要上傳到服務器的文件的名稱。

例如,如果我上傳了兩個都是tulips.png的文件,它們在服務器上被保存並上傳爲tulips.png和tulips2.png,但由於我使用的是$('.listImage').append(nameimagefile + '<br/>');,因此它將兩個文件名都顯示爲鬱金香.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; 

} 

最後下面是PHP腳本與javascript回調函數。如果文件存在或不存在於服務器的文件夾中,則它上傳文件。如果存在,那麼它賦予它一個不同的文件名通過文件名的末尾添加一個名字,如果它不存在,那麼上傳具有相同名稱的文件:

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> 

希望這是你需要的所有信息並感謝你。

+0

如果有一種php方式,你認爲比javascript更好的方式來檢索文件的名稱,並能夠把它放在JavaScript函數中,那麼我也接受這些想法:) – user1324106 2012-04-18 06:48:39

回答

1

您可以將$_FILES["fileImage"]["name"]作爲參數傳遞給您的js函數。 Javascript是一種客戶端語言,因此無法處理服務器上的文件。

+0

嗨,怎麼可以我傳遞$ _FILES [「fileImage」] [「name」]作爲js函數的參數?就像我說的PHP腳本是在一個單獨的頁面上的JavaScript函數 – user1324106 2012-04-18 09:31:54

+0

在PHP腳本中,完成上傳後,設置一個'$ _SESSION'變量包含上傳文件的名稱。我編輯了你的代碼。 – d4rkpr1nc3 2012-04-24 14:39:41

+0

@ d4rkpr1nc3不要編輯他的代碼,編輯你的答案。 – 2012-04-25 01:03:54