2011-11-05 199 views
0

我試圖通過這種方式上傳文件時讀取文件的文件大小通過ajax請求上傳文件時讀取文件大小

1。開始$ .ajax();請求啓動服務器到服務器下載文件(我使用php fopen + stream_copy_to_stream);

2。開始第二個$ a.ajax();請求每個合計時間並嘗試讀取當前文件大小,直到下載過程結束;

不幸的是,這不能按預期工作。

這兩個請求都是正確的,但文件大小僅在文件完全傳輸後才能讀取。所以我得到的所有警告消息在過程結束而不是同時

我想我正在做一些無法完成的事情?或者我只是想念一些東西?

僞代碼:

var uploadStart = 0; 
function startUploadProgressBar(file) { 
    var file = file; 
    uploadStart = setInterval(function() { 
     $.ajax({ 
      data: 'uploadProgress=1&file=' + file, 
      success: function(json) { 
       alert(json.filesize) 
      } 
     }); 

    }, 
    1000); 
} 
$('#submit').click(function() { 
    var file = somevar; 
    startUploadProgressBar(file); 
    $.ajax({ 
     success: function(json) { 
      clearInterval(uploadStart); 
     } 
    }); 
    return false; 
}); 

回答

0

爲什麼不只是有PHP頁面返回使用filesize()文件本身的大小?這樣你就不需要反覆輪詢。

+0

我需要漸進式地獲取文件大小(),而不僅僅是在最後!你明白嗎? –

+0

你想爲你的上傳生成一個進度條。在傳輸開始之前在文件上使用'filesize()',以獲得總文件大小而不存在任何文件訪問問題。然後跟蹤您傳輸的文件的數量。比例是你的進度條更新。 如果這不是你正在做的事情,你需要更新問題來澄清一些事情。 –

1

僅用於通過ajax上傳文件,您可以考慮使用jQuery表單插件。就我所知,它支持進度條。

如果您想堅持您的方法,請閱讀PHP手冊中function's manual page的註釋。還有其他可以修改的輸出狀態的傳輸。

+0

我上傳不是從客戶端到服務器,而是服務器到服務器 –