2012-01-14 109 views
2

我有一個問題。我試圖通過jquery & post method + PHP將圖片上傳到我的服務器。 片的下面的代碼:如何顯示上傳的當前進度(jquery + post + php)?

$.post("http://www.xyz.com/upload.php", { image: ImageObject}, function(data) { 
    //code      
}); 

我想通過文字來顯示上傳的最新進展(自動更新),這樣的事情:

<div>Current progress: <div id="progress">[dynamic number]</div> 

任何想法,我該怎麼辦呢?我不想使用flash - 只有PHP/jQuery。

+0

的唯一方法是使設置爲每隔x毫秒檢查使用服務器端代碼的進展情況向服務器發出請求。順便說一句,這是否.post甚至工作?我不認爲你可以用jQuery的ajax方法發送圖像。 – 2012-01-14 23:27:28

+0

是的,發佈工作正常(base64)。問題是,我不知道如何獲得當前進度的上傳:( – Jakub 2012-01-14 23:30:47

回答

1

可惜你不能獨自做到這一點本身通過jQuery的,因爲客戶端的JavaScript有網頁以外沒有獲得的客戶信息,但你有幾個選項:

  1. 使用閃光燈或者可以訪問客戶端的Java插件,例如this one
  2. 使用輪詢您的服務器的系統來請求當前文件的進度。我對PHP並不是很熟悉,但是在.NET中,負責接收上傳文件的類將告訴我迄今爲止上傳了多少字節。我會設置一個客戶端計時器,以給定的時間間隔(例如1秒)通過ajax請求這些信息,然後使用返回的信息來操縱進度條。
  3. 使用HTML5網頁套接字上傳進度從服務器到 客戶端。雖然它是一個非常整潔的選項,但它是我最不喜歡的,因爲它很難實現,並且不會享受到很寬的瀏覽器支持。

祝你好運!