2012-09-04 43 views
0

我有一個表單,其中一個輸入作爲文件上傳。我有一個PHP腳本,我打電話與jQuery的ajax驗證其他窗體字段和顯示窗體上方的div中的錯誤消息。它使用.html()jquery函數執行此操作,該函數基於與以下腳本非常相似的php回顯。php文件上傳驗證和錯誤顯示

我也創建一個PHP腳本來驗證文件上傳,看起來是這樣的:

<?php 

    $errorList = array(); 
    $inc = 0; 


    $allowedExt = array("jpg", "jpeg", "gif", "png"); 
    $fileExt = end(explode(".", $_FILES['imgUpload']['name'])); 
    if((($_FILES['imgUpload']['type'] == 'image/gif') 
    || ($_FILES['imgUpload']['type'] == 'image/pnjpeg') 
    || ($_FILES['imgUpload']['type'] == 'image/jpeg')) 
    && ($_FILES['imgUpload']['size'] < 2000000) 
    && in_array($fileExt, $allowedExt)){ 
    if($_FILES['imgUpload']['error'] > 0)){ 

     $errorList[$inc++] = '<span class="error"> File error:'. $_FILES['imgUpload']['error'].'</span>'; 
    } 

    } 
    else{ 
    $errorList[$inc++] = '<span class="error"> Invalid file </span>'; 

    } 

    echo '<ul class="errorList">'; 
    for($i =0; $i<$inc; $i++){ 
     echo $errorList[$i]; 

    } 
    echo '</ul>'; 


?> 

我想,在這個腳本顯示在一個類似的方式向其他錯誤消息,但作爲讀取,文件上傳不能使用ajax完成。

任何人有什麼建議,我怎麼可以去做這件事?

回答

0

Ajax無法進行文件上傳。但是你可以使用IFrame來使它看起來像Ajax。

的選項有:

  • 隱藏的iframe伎倆,由谷歌推廣。自己實現這一點可能會導致一些klunky的東西,所以這裏有一些庫,比如jQuery,它們有插件,比如jQuery的流行的Form Plugin,可以自動執行,所以你不必在使用它的時候感到髒。
  • 使用Flash來促進流程。最值得注意的是SWFUpload非常受歡迎。所有事情都是平等的,我可能會使用JavaScript解決方案,但我過去成功地使用了它。關於這個解決方案的很酷的事情是它帶有一個更好的界面,比如加載指示器和縮略圖等。不過,在這一點上,您要求用戶使用Flash + Javascript,這在某些情況下可能無法使用。
  • 使用Silverlight代替Flash,雖然我不會認爲這是一個可行的解決方案,因爲它比其他兩種解決方案的普及率低得多。

對你有所幫助,看看它是使用iframe選項

+0