2009-12-15 109 views
3

我有一個表單上傳文件,我會用ajax處理文件,但我不知道如何用ajax獲取數據。Ajax文件上傳

在我的劇本我用這個方法:

$.ajax(
      { 
       type: "POST", 
       url:  "upload.php", 
       data: ({ file : '???' }), 
       success: function(msg) 
       { 
        $('#upload_box').html(msg); 
       } 
      }); 

如何能聲明「文件」無功取文件數據? (文件名,tmp_name,類型,大小等)。

+1

你看着Uploadify解決了嗎?這就是我用來上傳文件的內容。非常簡單和易於使用。 – Steven 2009-12-15 01:24:10

+0

我更喜歡使用Ajax腳本,而不是Flash ... 我需要製作一個類似gmail的頭像腳本,現在我可以使用上述方法處理表單,我希望我也可以處理FILE數據與ajax ... – Pennywise83 2009-12-15 01:31:22

+0

這是jQuery與閃存結合。該文件用閃存上傳到服務器的TMP文件夾。從那裏jQuery叫你whatever.php文件,你可以在那裏處理其餘的。她可以獲取文件信息,大小等。 – Steven 2009-12-15 02:25:48

回答

2

你不能用標準的AJAX請求來做到這一點。最常見的解決方法是將文件發佈到隱藏的iframe中,如this tutorial所示。

由於您使用的是jQuery,因此您可能會發現AJAX Upload庫有用。

2

你可以將文件上傳到服務器,調用PHP腳本來讀取回給你,然後轉存到你想從

  //In your onUpload callback 
      var req = createRequest(); 
      req.open("GET", 'upload.php?file=' + filename,true); 

      req.send(null); 
      //Do your status checking 
      var filetext= req.responseText; 

框架閱讀並不能解決所有的問題什麼標籤,如果你正在使用需要解決的問題,你應該回到基礎,因爲這可以通過使用一些PHP的香草JavaScript來完成。

+0

這不是需要解決的框架,而是基本的HTML行爲。您目前無法在XHR中進行文件上傳。 – 2009-12-15 02:28:47

+0

XHR(XMLHTTPRequest)不是HTML行爲。它的Javascript。我使用javascript和php進行文件創建,並且我讀取了所有評論的文件,而且這是相同的,只有您需要等待將文件從臨時區域移動到服務器上的最終區域。如果您想了解更多相關信息,請提出問題並讓我知道它在哪裏,我會爲您發佈一些代碼。 – MikeEL 2009-12-15 14:20:48

+0

應該說有Http行爲。實際上,它比javascript低一級。大多數瀏覽器通過js提供了一個API,但是IE5-6實現了它作爲一個ActiveX對象。我的觀點是這不是一個JS框架問題。 – 2009-12-15 18:02:36