0
想獲得文件的進度被複制無法獲取文件拷貝進度
最初我送使用下面的代碼複製文件的請求。一旦文件被創建。我發送響應成功= 1,並開始複製過程,也叫getProgress
$.ajax({
url:'copyFile.php',
type: 'post',
dataType: 'json',
data: {'data':someData},
success: function(data) {
if(data.success){
progressIndex=setInterval(getProgress, 1000);
}
},
error:function(err){
console.log(err);
}
});
function getProgress(){
$.ajax({
url:'FileUploadProgress.php',
type: 'post',
dataType: 'json',
data: {'progress':'1'},
success: function(data) {
if(!data.success){
clearTimeout(progressIndex);
}
},
error:function(err){
console.log(err);
}
});
}
FileUploadProgress.php
class FileUploadProgress{
private $filename;
private $progress;
public function setfileProgress($filename,$progress){
$this->filename=$filename;
$this->progress=$progress;
}
function returnProgress(){
if(empty($this->filename) || empty($this->progress)){
echo json_encode(array('success'=>'0'));
}else{
echo json_encode(array('success'=>1,'filename'=>$this->filename,'progress'=>$this-
>progress));
}
}
}
$fileuploadprogress=new FileUploadProgress;
if($_POST['progress']){
$fileuploadprogress->returnProgress();
}
在複製我得到的進展,並調用該函數setfileProgress 來設置進度。另外在客戶端我已經請求了進度,但是wat得到的是成功= 0並且$ this-> progress是空的 我在代碼中丟失了什麼。請讓我知道
這並不是一件簡單的工作,只用php來處理。 你必須明白,每次執行後,一切都會丟失。因此,在每個ajax調用中創建一個新的FileUploadProgress實例,女巫無法訪問先前的實例屬性,將其視爲每個ajax調用都啓動一個新程序。 –
好的!所以我可以在複製之前創建實例並將其作爲響應發送回客戶端。然後通過那個實例來獲得進展? – nyfer
@PoelincaDorin或可能我可以使用單例模式來檢查是否只創建一個實例? – nyfer