2012-04-14 76 views
1

我在一個頁面和另一個頁面中有一個JavaScript函數我有一個專注於文件上傳的php腳本。目前我的文件正在成功上傳,這是個好消息。我的問題是,我想用php來檢查文件夾中是否已經存在一個文件,但是如果這是真的,我想使用javascript函數來顯示一條消息到狀態文件已經存在。如何才能做到這一點?如果文件已存在,如何顯示消息

下面是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/>'; 
      } 
} 

P.S請沒有人把他們的答案爲什麼不我只是把回聲在PHP代碼,我不想那樣做,因爲用戶實際上從未導航到PHP腳本。

+0

提交之前使用ajax,檢查文件是否已經存在或完全使用ajax上傳。或者最好的解決方案是,如果文件存在,用不同的名稱來編寫新的上傳文件,例如:'filename2,filename3'等 – safarov 2012-04-14 12:57:24

+0

@safarov你可以給我看一個函數的例子,看看文件是否已經存在,然後爲新的文件寫入不同的名字上傳的文件? – user1324106 2012-04-14 13:02:55

回答

1

在你的PHP代碼,檢查文件是否存在做

else{ 
echo 2; 
} 

在你在別的clausule JS代碼做

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檢查它,並顯示關於它的信息,或者可能在文件名後附加一個數字(文件(1).xyz,文件(2).xyz,文件(3).xyz)。這取決於你想要達到的目標。

1

你說。

PS請沒有人把他們的答案爲什麼不我只是把回聲在 PHP代碼,我不想那樣做,因爲用戶永遠不會 實際導航到PHP腳本。

無論如何你需要執行一些php代碼。所以你將不得不這樣做。然後,使用任何您想要的方式將信息顯示給用戶。

因爲我們沒有所有的代碼,我假設你在html代碼中有一個輸入[type = file],所以你需要使用帶有輸入值的ajax。將它發送到你的服務器,檢查文​​件名是否已經存在,然後使用ajax從php或者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(); 
     } 
     } 
     } 

檢查了jQuery AJAX API的更多相關信息

你必須寫一個PHP腳本,輸出一些JSON字符串如{「存在」:真正}在命令客戶端腳本工作。

1

@safarov你能告訴我一個函數的例子,看看文件是否已經存在,然後爲新上傳的文件寫入不同的名字?

保存/上傳名爲「filenamecounter.txt」的簡單文本文件, 僅包含文本1。

<?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); 
?> 
相關問題